diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
index 48fcdbbb064735cb29fac656b35f0c332dddde3b..8c63239f397c6ece0c5baedcb2c9bf433c303337 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
@@ -1248,6 +1248,12 @@ void Foam::autoRefineDriver::doRefine
             decomposer_,
             distributor_
         );
+
+
+        if (debug)
+        {
+            meshRefiner_.checkZoneFaces();
+        }
     }
 }
 
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index 78b7d9a1a115c9689b76f68756eabdb52107ab82..770b50254ad91720ddb34ff018b317985c5ebb3c 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -870,6 +870,9 @@ public:
                 const labelList& neiPatch
             );
 
+            //- Debug helper: check faceZones are not on processor patches
+            void checkZoneFaces() const;
+
             //- Create baffles for faces straddling zoned surfaces. Return
             //  baffles.
             autoPtr<mapPolyMesh> createZoneBaffles
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 76bb6150efb7526b39c3fdaeae831471f70d7fa9..6dc77b3949313d9c3fe07af5866580aa0a8060f5 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -531,6 +531,36 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createBaffles
 }
 
 
+void Foam::meshRefinement::checkZoneFaces() const
+{
+    const faceZoneMesh& fZones = mesh_.faceZones();
+
+    const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
+
+    forAll(pbm, patchI)
+    {
+        const polyPatch& pp = pbm[patchI];
+
+        if (isA<processorPolyPatch>(pp))
+        {
+            forAll(pp, i)
+            {
+                label faceI = pp.start()+i;
+                label zoneI = fZones.whichZone(faceI);
+
+                if (zoneI != -1)
+                {
+                    FatalErrorIn("meshRefinement::checkZoneFaces")
+                        << "face:" << faceI << " on patch " << pp.name()
+                        << " is in zone " << fZones[zoneI].name()
+                        << exit(FatalError);
+                }
+            }
+        }
+    }
+}
+
+
 Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createZoneBaffles
 (
     const labelList& globalToMasterPatch,