diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C
index 33563d728d86c1a6a605159245f1c25214882e6e..30aaa5f72b74364759a62c8f510583e89722510a 100644
--- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C
+++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutCell/isoCutCell.C
@@ -361,6 +361,23 @@ Foam::label Foam::isoCutCell::calcSubCell
         // Cell cut at least at one face
         cellStatus_ = 0;
         calcIsoFaceCentreAndArea();
+
+        // In the rare but occuring cases where a cell is only touched at a
+        // point or a line the isoFaceArea_ will have zero length and here the
+        // cell should be treated as either completely empty or full.
+        if (mag(isoFaceArea_) < 10*SMALL)
+        {
+            if (fullySubFaces_.empty())
+            {
+                // Cell fully above isosurface
+                cellStatus_ = 1;
+            }
+            else
+            {
+                // Cell fully below isosurface
+                cellStatus_ = -1;
+            }
+        }
     }
     else if (fullySubFaces_.empty())
     {