diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C
index 0ea3551bb1a31f11cbc52e036c4a85e103641760..a0ebd790487ce958acfd3c8680ed7fdc93a11e37 100644
--- a/src/lagrangian/basic/Cloud/Cloud.C
+++ b/src/lagrangian/basic/Cloud/Cloud.C
@@ -261,7 +261,12 @@ void Foam::Cloud<ParticleType>::move(TrackData& td, const scalar trackTime)
             {
                 // If we are running in parallel and the particle is on a
                 // boundary face
-                if (Pstream::parRun() && p.face() >= pMesh().nInternalFaces())
+                if
+                (
+                    Pstream::parRun()
+                 && td.switchProcessor
+                 && p.face() >= pMesh().nInternalFaces()
+                )
                 {
                     label patchI = pbm.whichPatch(p.face());
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 62f5d501624ff42c224717bd4ee589c25e22ef3a..7fdf8115423b3ff9e695a0ffbd2e113b63d5107d 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -345,6 +345,8 @@ bool Foam::KinematicParcel<ParcelType>::move
             p.calc(td, dt, cellI);
         }
 
+        p.age() += dt;
+
         if (p.onBoundary() && td.keepParticle)
         {
             if (isA<processorPolyPatch>(pbMesh[p.patch(p.face())]))
@@ -353,8 +355,6 @@ bool Foam::KinematicParcel<ParcelType>::move
             }
         }
 
-        p.age() += dt;
-
         td.cloud().functions().postMove(p, cellI, dt, start, td.keepParticle);
     }