diff --git a/Code/Common/otbImageRegionTileMapSplitter.txx b/Code/Common/otbImageRegionTileMapSplitter.txx
index 67edfdcbc1db318e1ad2b897b5b2a2718321273b..6b6ca577b23105661b4bb95f933be67065221b18 100644
--- a/Code/Common/otbImageRegionTileMapSplitter.txx
+++ b/Code/Common/otbImageRegionTileMapSplitter.txx
@@ -43,7 +43,7 @@ ImageRegionTileMapSplitter<VImageDimension>
   for (unsigned int j = VImageDimension; j > 0; --j)
     {
 //    otbMsgDevMacro(<< "*** Dimension: " << j-1);
-    unsigned long int remainingToDo = vcl_ceil((double) requestedNumber / numPieces);
+    unsigned long int remainingToDo = static_cast<unsigned long int>(vcl_ceil(static_cast<double>(requestedNumber) / numPieces));
     unsigned int      maxPieces = (regionIndex[j - 1] + regionSize[j - 1] - 1) / m_AlignStep - regionIndex[j - 1]
                                   / m_AlignStep + 1;
     unsigned int stepPerPiece = 1;