diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
index 614248521886763ae84cde0409488821d307bb38..a883c39d421d4fa7e2c859bc5b2648c9c32886f2 100644
--- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
+++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
@@ -103,8 +103,12 @@ bool Foam::trackedParticle::move
     scalar tEnd = (1.0 - stepFraction())*trackTime;
     scalar dtMax = tEnd;
 
-    if (tEnd <= SMALL)
+    if (tEnd <= SMALL && onBoundary())
     {
+        // This is a hack to handle particles reaching their endpoint
+        // on a processor boundary. If the endpoint is on a processor face
+        // it currently gets transferred backwards and forwards infinitely.
+
         // Remove the particle
         td.keepParticle = false;
     }