diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
index 1fe0b2c2f861c6602819141535d62bf76207f92d..33583dc5bf905baa0d19bb34127b233d9cacf31d 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
@@ -192,8 +192,12 @@ bool Foam::streamLineParticle::move(streamLineParticle::trackData& td)
         // set the lagrangian time-step
         scalar dt = min(dtMax, tEnd);
 
-        // Cross cell in steps
-        for (label subIter = 0; subIter < td.nSubCycle_; subIter++)
+        // Cross cell in steps:
+        // - at subiter 0 calculate dt to cross cell in nSubCycle steps
+        // - at the last subiter do all of the remaining track
+        // - do a few more subiters than nSubCycle since velocity might
+        //   be decreasing
+        for (label subIter = 0; subIter < 2*td.nSubCycle_; subIter++)
         {
             --lifeTime_;