diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
index d2728f8b9d634d40aa563b009502d909d9c493fe..5e7a0b010bec6621e7340df8853e3f516f9add28 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
@@ -383,6 +383,35 @@ void Foam::polyTopoChange::checkFace
             << " own:" << own << " nei:" << nei
             << " patchI:" << patchI << abort(FatalError);
     }
+    if (faceI >= 0 && faceI < faces_.size() && faceRemoved(faceI))
+    {
+        FatalErrorIn
+        (
+            "polyTopoChange::checkFace(const face&, const label"
+            ", const label, const label, const label)"
+        )   << "Face already marked for removal"
+            << nl
+            << "f:" << f
+            << " faceI(-1 if added face):" << faceI
+            << " own:" << own << " nei:" << nei
+            << " patchI:" << patchI << abort(FatalError);
+    }
+    forAll(f, fp)
+    {
+        if (f[fp] < points_.size() && pointRemoved(f[fp]))
+        {
+            FatalErrorIn
+            (
+                "polyTopoChange::checkFace(const face&, const label"
+                ", const label, const label, const label)"
+            )   << "Face uses removed vertices"
+                << nl
+                << "f:" << f
+                << " faceI(-1 if added face):" << faceI
+                << " own:" << own << " nei:" << nei
+                << " patchI:" << patchI << abort(FatalError);
+        }
+    }
 }