diff --git a/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx b/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
index fc47583a39d2d3b6e03d5821ee0971b070abf494..6b9a27b731665c595b78dc8b50ac1c29f7794a23 100644
--- a/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
+++ b/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
@@ -185,7 +185,7 @@ public:
   }
 
 protected:
-  CurlFileDescriptorResource(){}
+  CurlFileDescriptorResource(): m_File(nullptr) {}
 
   ~CurlFileDescriptorResource() override
   {
@@ -195,9 +195,9 @@ protected:
 private:
   FILE *      m_File;
 
-  // prevent copying and assignment; not implemented
-  CurlFileDescriptorResource (const CurlFileDescriptorResource &);
-  CurlFileDescriptorResource & operator= (const CurlFileDescriptorResource &);
+  // prevent copying and assignment
+  CurlFileDescriptorResource (const CurlFileDescriptorResource &) = delete;
+  CurlFileDescriptorResource & operator= (const CurlFileDescriptorResource &) = delete;
 }; //end of class FileResource
 
 #endif // OTB_USE_CURL
diff --git a/Modules/Core/Common/include/otbImageRegionTileMapSplitter.h b/Modules/Core/Common/include/otbImageRegionTileMapSplitter.h
index 63767c7acd12477f27151969288ebbcfb384973b..fdcf4e67c1fb37bc614f3beda83ff711b1570bec 100644
--- a/Modules/Core/Common/include/otbImageRegionTileMapSplitter.h
+++ b/Modules/Core/Common/include/otbImageRegionTileMapSplitter.h
@@ -123,7 +123,7 @@ public:
                               const RegionType& region) override;
 
 protected:
-  ImageRegionTileMapSplitter() : m_AlignStep(256){}
+  ImageRegionTileMapSplitter() : m_SplitsPerDimension{0}, m_AlignStep(256) {}
   ~ImageRegionTileMapSplitter() override {}
   void PrintSelf(std::ostream& os, itk::Indent indent) const override;
 
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageBlackmanFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageBlackmanFunction.h
index 910908443fdc97c419798ce2423adb6b8a98e18f..4bad6a65ef34138eb623b6ea0b3e1310fd104583 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageBlackmanFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageBlackmanFunction.h
@@ -41,6 +41,7 @@ template<class TInput = double, class TOutput = double>
 class BlackmanWindowFunction
 {
 public:
+  BlackmanWindowFunction(): m_Radius(1), m_Factor1(CONST_PI), m_Factor2(2.0 * CONST_PI) {} // default radius is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -95,8 +96,7 @@ template<class TInputImage, class TBoundaryCondition = itk::ConstantBoundaryCond
       double, class TInputInterpolator = double, class TOutputInterpolator = double>
 class ITK_EXPORT WindowedSincInterpolateImageBlackmanFunction :
   public WindowedSincInterpolateImageFunctionBase<TInputImage,
-      typename Function::BlackmanWindowFunction<TInputInterpolator,
-          TOutputInterpolator>,
+      typename Function::BlackmanWindowFunction<TInputInterpolator, TOutputInterpolator>,
       TBoundaryCondition,
       TCoordRep>
 {
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageCosineFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageCosineFunction.h
index 5f37e59be5177494d82108c153bb6573d6f20940..46a65cc60de9715b6b79840467666e9620f89336 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageCosineFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageCosineFunction.h
@@ -41,6 +41,7 @@ template<class TInput = double, class TOutput = double>
 class CosineWindowFunction
 {
 public:
+  CosineWindowFunction(): m_Radius(1), m_Factor(CONST_PI / 2.0) {} // default radius is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -63,9 +64,9 @@ public:
     return (x == 0.0) ? static_cast<TOutput>(temp) : static_cast<TOutput>(temp * std::sin(px) / px);
   }
 private:
+  unsigned int m_Radius;
   // Equal to \f$ \frac{\pi}{2 m} \f$
   double       m_Factor;
-  unsigned int m_Radius;
 };
 } //namespace Function
 
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageGaussianFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageGaussianFunction.h
index 9d20a68c81157570f581e298fc48fb05072b2e73..b2a6bdc1bc0e18be51b28cce02508d960bfe1e9b 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageGaussianFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageGaussianFunction.h
@@ -41,6 +41,7 @@ template<class TInput = double, class TOutput = double>
 class GaussianWindowFunction
 {
 public:
+  GaussianWindowFunction(): m_Radius(1), m_Factor(-2.0 / CONST_PI) {} // default radius is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -63,8 +64,8 @@ public:
     return (x == 0.0) ? static_cast<TOutput>(temp) : static_cast<TOutput>(temp * std::sin(px) / px);
   }
 private:
-  double       m_Factor;
   unsigned int m_Radius;
+  double       m_Factor;
 };
 
 } //namespace Function
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageHammingFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageHammingFunction.h
index 003bbdd2508a615eea5ab186762d922eec7579ce..2ea6af2790e9608479ea1ac09f7b2731b84506bb 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageHammingFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageHammingFunction.h
@@ -41,6 +41,7 @@ template<class TInput = double, class TOutput = double>
 class HammingWindowFunction
 {
 public:
+  HammingWindowFunction(): m_Radius(1), m_Factor(CONST_PI) {} // default radius is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -63,9 +64,9 @@ public:
     return (x == 0.0) ? static_cast<TOutput>(temp) : static_cast<TOutput>(temp * std::sin(px) / px);
   }
 private:
+  unsigned int m_Radius;
   // Equal to \f$ \frac{\pi}{m} \f$
   double       m_Factor;
-  unsigned int m_Radius;
 };
 
 } //namespace Function
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageLanczosFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageLanczosFunction.h
index bfd9162671520e945d0c28c078a55775677a5d37..8e0e6355aea1385c6b47f84ab7f980576963c4aa 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageLanczosFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageLanczosFunction.h
@@ -43,6 +43,7 @@ template<class TInput = double, class TOutput = double>
 class LanczosWindowFunction
 {
 public:
+  LanczosWindowFunction(): m_Radius(1), m_Factor(CONST_PI) {} // default factor is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -74,9 +75,9 @@ public:
     return (x == 0.0) ? static_cast<TOutput>(temp) : static_cast<TOutput>(temp * std::sin(px) / px);
   }
 private:
+  unsigned int m_Radius;
   // Equal to \f$ \frac{\pi}{m} \f$
   double       m_Factor;
-  unsigned int m_Radius;
 };
 } //namespace Function
 
diff --git a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageWelchFunction.h b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageWelchFunction.h
index 5625f2f41188490ce2536de72c88234ceae79743..03fa31a4a3540bc9bed73e21e71ff9862dccc606 100644
--- a/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageWelchFunction.h
+++ b/Modules/Core/Interpolation/include/otbWindowedSincInterpolateImageWelchFunction.h
@@ -41,6 +41,7 @@ template<class TInput = double, class TOutput = double>
 class WelchWindowFunction
 {
 public:
+  WelchWindowFunction() : m_Radius(1), m_Factor(1) {} // default radius is 1 at construction
   void SetRadius(unsigned int radius)
   {
     m_Radius = radius;
@@ -63,9 +64,9 @@ public:
     return (x == 0.0) ? static_cast<TOutput>(temp) : static_cast<TOutput>(temp * std::sin(px) / px);
   }
 private:
+  unsigned int m_Radius;
   // Equal to \f$ \frac{1}{m^2} \f$
   double       m_Factor;
-  unsigned int m_Radius;
 };
 } //namespace Function
 
diff --git a/Modules/Core/PointSet/include/otbPointSetExtractROI.hxx b/Modules/Core/PointSet/include/otbPointSetExtractROI.hxx
index 8f55da34976475272ff1bbee67bf8f956bc2f1a7..30fe8820c94117163845a4d8d143751c621c6125 100644
--- a/Modules/Core/PointSet/include/otbPointSetExtractROI.hxx
+++ b/Modules/Core/PointSet/include/otbPointSetExtractROI.hxx
@@ -32,7 +32,7 @@ namespace otb
  */
 template <class TInputPointSet, class TOutputPointSet>
 PointSetExtractROI<TInputPointSet, TOutputPointSet>
-::PointSetExtractROI()
+::PointSetExtractROI() : m_StartX(0), m_StartY(0), m_SizeX(0), m_SizeY(0)
 {
 }
 
diff --git a/Modules/Filtering/DimensionalityReduction/include/otbEstimateInnerProductPCAImageFilter.hxx b/Modules/Filtering/DimensionalityReduction/include/otbEstimateInnerProductPCAImageFilter.hxx
index 24cbb84debf8052f399583c6025488e58f4029a3..7f9d5d39f51012af6e1f83b6261571cb9a467ea1 100644
--- a/Modules/Filtering/DimensionalityReduction/include/otbEstimateInnerProductPCAImageFilter.hxx
+++ b/Modules/Filtering/DimensionalityReduction/include/otbEstimateInnerProductPCAImageFilter.hxx
@@ -34,9 +34,8 @@ namespace otb
  */
 template <class TInputImage, class TOutputImage>
 EstimateInnerProductPCAImageFilter<TInputImage, TOutputImage>
-::EstimateInnerProductPCAImageFilter()
+::EstimateInnerProductPCAImageFilter(): m_NumberOfPrincipalComponentsRequired(1), m_CenterData(true)
 {
-  m_NumberOfPrincipalComponentsRequired = 1;
 }
 
 /**
diff --git a/Modules/Filtering/DimensionalityReduction/include/otbInnerProductPCAImageFilter.hxx b/Modules/Filtering/DimensionalityReduction/include/otbInnerProductPCAImageFilter.hxx
index ab3b3e331ca9b90aaa603ad85b03e90b4f64fc13..1498285a882c51ebcc72eb58c2b46b3db987afeb 100644
--- a/Modules/Filtering/DimensionalityReduction/include/otbInnerProductPCAImageFilter.hxx
+++ b/Modules/Filtering/DimensionalityReduction/include/otbInnerProductPCAImageFilter.hxx
@@ -36,6 +36,7 @@ InnerProductPCAImageFilter<TInputImage, TOutputImage>
   this->SetNthOutput(0, OutputImageType::New());
   m_EstimatePCAFilter  = EstimatePCAFilterType::New();
   m_NormalizePCAFilter  = NormalizePCAFilterType::New();
+  m_NumberOfPrincipalComponentsRequired = 1;
   m_CenterData = true;
   m_GenerateMeanComponent = false;
   m_MeanFilter = MeanFilterType::New();
diff --git a/Modules/Filtering/Polarimetry/include/otbMultiChannelsPolarimetricSynthesisFilter.hxx b/Modules/Filtering/Polarimetry/include/otbMultiChannelsPolarimetricSynthesisFilter.hxx
index 6a0de2726707cd5f9cd7734f3ef18f245317e664..d3e1d6e60a9685044e04bbd321b059cf4f79901c 100644
--- a/Modules/Filtering/Polarimetry/include/otbMultiChannelsPolarimetricSynthesisFilter.hxx
+++ b/Modules/Filtering/Polarimetry/include/otbMultiChannelsPolarimetricSynthesisFilter.hxx
@@ -36,14 +36,18 @@ namespace otb
  */
 template <class TInputImage, class TOutputImage, class TFunction>
 MultiChannelsPolarimetricSynthesisFilter<TInputImage, TOutputImage, TFunction>
-::MultiChannelsPolarimetricSynthesisFilter()
+::MultiChannelsPolarimetricSynthesisFilter():
+    m_PsiI(0.0),
+    m_KhiI(0.0),
+    m_PsiR(0.0),
+    m_KhiR(0.0),
+    m_Gain(1.0),
+    m_Mode(0),
+    m_EmissionH(false),
+    m_EmissionV(false)
 {
   this->SetNumberOfRequiredInputs(1);
   this->InPlaceOff();
-  SetEmissionH(false);
-  SetEmissionV(false);
-  SetGain(1);
-  SetMode(0);
   m_ArchitectureType = PolarimetricData::New();
 }
 
diff --git a/Modules/Filtering/Smoothing/include/otbMeanShiftSmoothingImageFilter.h b/Modules/Filtering/Smoothing/include/otbMeanShiftSmoothingImageFilter.h
index 606c00e3d678a8fcf98b7fbad52aa722ed082730..ca8e5c5db216468754921f701aa68a8acedc8617 100644
--- a/Modules/Filtering/Smoothing/include/otbMeanShiftSmoothingImageFilter.h
+++ b/Modules/Filtering/Smoothing/include/otbMeanShiftSmoothingImageFilter.h
@@ -59,10 +59,12 @@ class SpatialRangeJointDomainTransform
 public:
   typedef double RealType;
 
-  SpatialRangeJointDomainTransform()
+  SpatialRangeJointDomainTransform():
+      m_ImageDimension(0),
+      m_NumberOfComponentsPerPixel(0),
+      m_OutputSize(0)
   {
   }
-  // ~SpatialRangeJointDomainTransform() {}
 
   typename TOutputJointImage::PixelType operator()(const typename TInputImage::PixelType & inputPixel,
                                                    const typename TInputImage::IndexType & index) const
diff --git a/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx b/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx
index 2ceeb5a2924dab8e85df2eaf420a4c9ab27c8348..fccaddb38eb76b622d580f9d22fb8b9e07bc6b70 100644
--- a/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx
+++ b/Modules/IO/IOGDAL/src/otbGDALOverviewsBuilder.cxx
@@ -155,11 +155,6 @@ GDALOverviewsBuilder
   if( factor<=1 )
     return 0;
 
-  assert( minSize>0 );
-
-  if( minSize<=0 )
-    return 0;
-
   assert( !m_GDALDataset.IsNull() );
 
   // unsigned int minSize = static_cast< unsigned int >( pow( factor, n ) );
diff --git a/Modules/IO/ImageIO/include/otbScalarBufferToImageFileWriter.hxx b/Modules/IO/ImageIO/include/otbScalarBufferToImageFileWriter.hxx
index df34ef682d94a3d097991b54007b6874aafba2ba..45c633b1fd636d99ad489d919488669d66b86285 100644
--- a/Modules/IO/ImageIO/include/otbScalarBufferToImageFileWriter.hxx
+++ b/Modules/IO/ImageIO/include/otbScalarBufferToImageFileWriter.hxx
@@ -43,7 +43,7 @@ void
 ScalarBufferToImageFileWriter<TBufferType, TOutputPixelType>::GenerateData()
 {
   // Check image parameters
-  if( (m_ImageSize[0]==0) || (m_ImageSize[0]==0) )
+  if( (m_ImageSize[0]==0) || (m_ImageSize[1]==0) )
     {
       itkExceptionMacro("Invalid output image size, Size can't be null.");
     }
diff --git a/Modules/IO/TestKernel/src/otbTestDriver.cxx b/Modules/IO/TestKernel/src/otbTestDriver.cxx
index 930c1910b4ea1311fbb60faa47bbf0e29845e533..8939e2cf1fe9f012edec990eb149939bbe114a15 100644
--- a/Modules/IO/TestKernel/src/otbTestDriver.cxx
+++ b/Modules/IO/TestKernel/src/otbTestDriver.cxx
@@ -188,9 +188,8 @@ int main(int ac, char* av[])
 }
 
 // This is a dummy main to be registered as a test for the otbTestMain
-int Execute(int argc, char * argv[])
+int Execute(int, char * argv[])
 {
-  argc -= 1;
   argv += 1;
   // Create the appropriate itk process
   itksysProcess * process = itksysProcess_New();
diff --git a/Modules/Learning/Markov/include/otbMarkovRandomFieldFilter.hxx b/Modules/Learning/Markov/include/otbMarkovRandomFieldFilter.hxx
index 2b327cafe25714a7825a83c21200583125019fa7..c058234566213edd7551b1517fb81906c73c2b2c 100644
--- a/Modules/Learning/Markov/include/otbMarkovRandomFieldFilter.hxx
+++ b/Modules/Learning/Markov/include/otbMarkovRandomFieldFilter.hxx
@@ -243,11 +243,6 @@ void
 MarkovRandomFieldFilter<TInputImage, TClassifiedImage>
 ::Allocate()
 {
-  if (m_NumberOfClasses <= 0)
-    {
-    throw itk::ExceptionObject(__FILE__, __LINE__, "NumberOfClasses <= 0.", ITK_LOCATION);
-    }
-
   //Set the output labelled and allocate the memory
   LabelledImagePointer outputPtr = this->GetOutput();
 
diff --git a/Modules/Registration/DisparityMap/include/otbDisparityMapMedianFilter.hxx b/Modules/Registration/DisparityMap/include/otbDisparityMapMedianFilter.hxx
index ec3834e950a5037574e066e3517ed45fb0914ed8..a75248d5e61d4740ab872b8103082d42fa2be231 100644
--- a/Modules/Registration/DisparityMap/include/otbDisparityMapMedianFilter.hxx
+++ b/Modules/Registration/DisparityMap/include/otbDisparityMapMedianFilter.hxx
@@ -260,7 +260,7 @@ DisparityMapMedianFilter< TInputImage, TOutputImage, TMask>
       InputIt.SetLocation(outputIt.GetIndex());
       for (unsigned int i=0; i<InputIt.Size(); i++)
         {
-        if (!inputmaskPtr || (inputmaskPtr && MaskInputIt.GetPixel(i) != 0))
+        if (!inputmaskPtr || (MaskInputIt.GetPixel(i) != 0))
           {
           p++;
           pixels.push_back(InputIt.GetPixel(i));
@@ -347,7 +347,7 @@ DisparityMapMedianFilter< TInputImage, TOutputImage, TMask>
         MaskInputIt.SetLocation(outputIt.GetIndex());
         }
 
-      if ((!inputmaskPtr || (inputmaskPtr && MaskInputIt.GetCenterPixel() != 0)) &&
+      if ((!inputmaskPtr || (MaskInputIt.GetCenterPixel() != 0)) &&
           std::fabs(InputIt.GetCenterPixel() - MedianIt.Get())>m_IncoherenceThreshold)
         {
         outputDisparityMapIt.Set(0.0); //Remove pixel from disparity map//
diff --git a/Modules/Registration/DisparityMap/include/otbPixelWiseBlockMatchingImageFilter.hxx b/Modules/Registration/DisparityMap/include/otbPixelWiseBlockMatchingImageFilter.hxx
index 2c1ce1af846e8e8088bb08f811299bf794762f73..454a6385f1c86d16a82ad13cb0fff45b0d2ed4cd 100644
--- a/Modules/Registration/DisparityMap/include/otbPixelWiseBlockMatchingImageFilter.hxx
+++ b/Modules/Registration/DisparityMap/include/otbPixelWiseBlockMatchingImageFilter.hxx
@@ -670,9 +670,9 @@ TOutputDisparityImage,TMaskImage,TBlockMatchingFunctor>
           ((tmpIndex[1] - this->m_GridIndex[1] + this->m_Step) % this->m_Step == 0))
         {
         // If the mask is present and valid
-        if(!inLeftMaskPtr || (inLeftMaskPtr && inLeftMaskIt.Get() > 0) )
+        if(!inLeftMaskPtr || (inLeftMaskIt.Get() > 0) )
           {
-          if(!inRightMaskPtr || (inRightMaskPtr && inRightMaskIt.Get() > 0) )
+          if(!inRightMaskPtr || (inRightMaskIt.Get() > 0) )
             {
             int estimatedMinHDisp = m_MinimumHorizontalDisparity;
             int estimatedMinVDisp = m_MinimumVerticalDisparity;
diff --git a/Modules/Registration/DisparityMap/include/otbSubPixelDisparityImageFilter.hxx b/Modules/Registration/DisparityMap/include/otbSubPixelDisparityImageFilter.hxx
index 5a2834ff83fe367750eed2bf522c1a42ecfc5ed4..fdf976a52d326216161d337b5b8f3f560b3d97d5 100644
--- a/Modules/Registration/DisparityMap/include/otbSubPixelDisparityImageFilter.hxx
+++ b/Modules/Registration/DisparityMap/include/otbSubPixelDisparityImageFilter.hxx
@@ -762,9 +762,9 @@ TDisparityImage,TMaskImage,TBlockMatchingFunctor>
           inRightMaskIt.SetIndex(curRightPos);
           }
         // check that the current positions are not masked
-        if(!inLeftMaskPtr || (inLeftMaskPtr && inLeftMaskIt.Get() > 0) )
+        if(!inLeftMaskPtr || (inLeftMaskIt.Get() > 0) )
           {
-          if(!inRightMaskPtr || (inRightMaskPtr && inRightMaskIt.Get() > 0) )
+          if(!inRightMaskPtr || (inRightMaskIt.Get() > 0) )
             {
             RegionType smallRightRegion;
             smallRightRegion.SetIndex(0,curRightPos[0]-1);
@@ -1195,9 +1195,9 @@ TDisparityImage,TMaskImage,TBlockMatchingFunctor>
           inRightMaskIt.SetIndex(curRightPos);
           }
         // check that the current positions are not masked
-        if(!inLeftMaskPtr || (inLeftMaskPtr && inLeftMaskIt.Get() > 0) )
+        if(!inLeftMaskPtr || (inLeftMaskIt.Get() > 0) )
           {
-          if(!inRightMaskPtr || (inRightMaskPtr && inRightMaskIt.Get() > 0) )
+          if(!inRightMaskPtr || (inRightMaskIt.Get() > 0) )
             {
             RegionType smallRightRegion;
             smallRightRegion.SetIndex(0,curRightPos[0]-1);
@@ -1696,9 +1696,9 @@ TDisparityImage,TMaskImage,TBlockMatchingFunctor>
           inRightMaskIt.SetIndex(curRightPos);
           }
         // check that the current positions are not masked
-        if(!inLeftMaskPtr || (inLeftMaskPtr && inLeftMaskIt.Get() > 0) )
+        if(!inLeftMaskPtr || (inLeftMaskIt.Get() > 0) )
           {
-          if(!inRightMaskPtr || (inRightMaskPtr && inRightMaskIt.Get() > 0) )
+          if(!inRightMaskPtr || (inRightMaskIt.Get() > 0) )
             {
             RegionType smallRightRegion;
             smallRightRegion.SetIndex(0,curRightPos[0]-1);