diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 037ada186c673cad39c379cca3d01d35785730fc..74d077f74686b458f9061da0e03b5c4fe0ed44a4 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -292,8 +292,8 @@ bool Foam::KinematicParcel<ParcelType>::move
         f = min(f, maxCo*l/max(SMALL*l, mag(s)));
         if (p.active())
         {
-            // Track to and hit the next face
-            p.trackToAndHitFace(f*s, f, td);
+            // Track to the next face
+            p.trackToFace(f*s, f);
         }
         else
         {
@@ -321,6 +321,11 @@ bool Foam::KinematicParcel<ParcelType>::move
             p.calc(td, dt, celli);
         }
 
+        if (p.onFace() && td.keepParticle)
+        {
+            p.hitFace(s, td);
+        }
+
         if (p.onBoundaryFace() && td.keepParticle)
         {
             if (isA<processorPolyPatch>(pbMesh[p.patch()]))