diff --git a/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.hxx b/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.hxx
index 0c2ce7774d484efc6a2047350ce73b9c5b1b1389..0b0077d10ca09cf5b1f9253f5083c0b56474d34a 100644
--- a/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.hxx
+++ b/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.hxx
@@ -186,8 +186,10 @@ OverlapSaveConvolutionImageFilter<TInputImage, TOutputImage, TBoundaryCondition>
                                                                      FFTW_MEASURE);
 
   // left zero padding
-  unsigned int leftskip = static_cast<unsigned int>(std::max(0L, inputIndex[0] - pieceIndex[0]));
-  unsigned int topskip =  pieceSize[0] * static_cast<unsigned int>(std::max(0L, inputIndex[1] - pieceIndex[1]));
+  unsigned int leftskip = static_cast<unsigned int>(std::max(
+   (typename InputImageType::IndexValueType) 0, inputIndex[0] - pieceIndex[0]));
+  unsigned int topskip =  pieceSize[0] * static_cast<unsigned int>(std::max(
+   (typename InputImageType::IndexValueType) 0, inputIndex[1] - pieceIndex[1]));
 
   // zero filling
   memset(inputPiece,0,pieceNbOfPixel * sizeof(InputPixelType));