diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
index 9685fd0d2ee0b3dc45edf4d4fd21852a21d21812..e14b11200bbdb7bbaf318b63e6916a888c34f11f 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
@@ -45,6 +45,7 @@ Foam::scalar Foam::streamLineParticle::calcSubCycleDeltaT
 ) const
 {
     streamLineParticle testParticle(*this);
+
     bool oldKeepParticle = td.keepParticle;
     bool oldSwitchProcessor = td.switchProcessor;
     scalar fraction = testParticle.trackToFace(position()+dt*U, td);
@@ -196,9 +197,7 @@ bool Foam::streamLineParticle::move
         // 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++)
+        for (label subIter = 0; subIter < td.nSubCycle_; subIter++)
         {
             --lifeTime_;
 
@@ -217,14 +216,14 @@ bool Foam::streamLineParticle::move
                 // Adapt dt to cross cell in a few steps
                 dt = calcSubCycleDeltaT(td, dt, U);
             }
-            else if (subIter == td.nSubCycle_-1)
+            else if (subIter == td.nSubCycle_ - 1)
             {
                 // Do full step on last subcycle
                 dt = min(dtMax, tEnd);
             }
 
 
-            scalar fraction = trackToFace(position()+dt*U, td);
+            scalar fraction = trackToFace(position() + dt*U, td);
             dt *= fraction;
 
             tEnd -= dt;
@@ -236,7 +235,13 @@ bool Foam::streamLineParticle::move
                 lifeTime_ = 0;
             }
 
-            if (!td.keepParticle || td.switchProcessor || lifeTime_ == 0)
+            if
+            (
+                face() != -1
+            || !td.keepParticle
+            ||  td.switchProcessor
+            ||  lifeTime_ == 0
+            )
             {
                 break;
             }