diff --git a/include/lsgrmController.txx b/include/lsgrmController.txx
index 487c834022c61d4989f3ec0ec95d41400de02b41..33fd537af4c6d93a02c9b9c09d335b4488e3232c 100644
--- a/include/lsgrmController.txx
+++ b/include/lsgrmController.txx
@@ -96,9 +96,6 @@ void Controller<TSegmenter>::RunSegmentation()
         m_TileHeight,
         isFusion);
 
-    // Update the given number of iterations
-    numberOfIterationsRemaining -= m_NumberOfFirstIterations;
-
 #ifdef OTB_USE_MPI
     // Gathering useful variables
     GatherUsefulVariables(accumulatedMemory, isFusion);
@@ -107,20 +104,9 @@ void Controller<TSegmenter>::RunSegmentation()
     // Time monitoring
     ShowTime(t);
 
-    std::cout << "accumulatedMemory=" << accumulatedMemory << std::endl;
 
     while(accumulatedMemory > m_Memory && isFusion)
       {
-      if (numberOfIterationsRemaining < numberOfIterationsForPartialSegmentations)
-        {
-        numberOfIterationsForPartialSegmentations = numberOfIterationsRemaining;
-        numberOfIterationsRemaining = 0;
-        }
-      else
-        {
-        numberOfIterationsRemaining -= numberOfIterationsForPartialSegmentations;
-        }
-
       isFusion = false;
       accumulatedMemory = RunPartialSegmentation<TSegmenter>(
           m_SpecificParameters,
@@ -134,6 +120,9 @@ void Controller<TSegmenter>::RunSegmentation()
           m_InputImage->GetNumberOfComponentsPerPixel(),
           isFusion);
 
+      std::cout << "accumulatedMemory=" << accumulatedMemory << std::endl;
+
+
 #ifdef OTB_USE_MPI
       // Gathering useful variables
       GatherUsefulVariables(accumulatedMemory, isFusion);
@@ -142,8 +131,15 @@ void Controller<TSegmenter>::RunSegmentation()
       // Time monitoring
       ShowTime(t);
 
-      if (numberOfIterationsRemaining == 0)
+      // Update number of remaining iterations
+      if (numberOfIterationsRemaining < numberOfIterationsForPartialSegmentations)
+        {
         break;
+        }
+      else
+        {
+        numberOfIterationsRemaining -= numberOfIterationsForPartialSegmentations;
+        }
       }
 
 #ifdef OTB_USE_MPI
@@ -196,7 +192,7 @@ void Controller<TSegmenter>::RunSegmentation()
     TSegmenter segmenter;
     segmenter.SetParam(m_SpecificParameters);
     segmenter.SetThreshold(m_Threshold);
-    segmenter.SetDoFastSegmentation(true);
+    segmenter.SetDoFastSegmentation(false);
     segmenter.SetNumberOfIterations(m_NumberOfIterations);
     segmenter.SetInput(m_InputImage);
     segmenter.Update();