diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
index 6d3db6936f13a0a31a0f8176a18df5451e88df32..67b3513c31280b9821fb60e7383b312ea55addf8 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
@@ -332,7 +332,19 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
     (
         referenceCS().localPosition(samplePoints)
     );
-    const vectorField& localVertices = tlocalVertices();
+    vectorField& localVertices = tlocalVertices();
+
+    // Shear to avoid degenerate cases
+    forAll(localVertices, i)
+    {
+        point& pt = localVertices[i];
+        const scalar magPt = mag(pt);
+        const point nptDir = pt/magPt;
+        if (magPt > ROOTVSMALL)
+        {
+            pt += pow(magPt, 1.1 + Foam::sqrt(SMALL))*nptDir;
+        }
+    }
 
     // Determine triangulation
     List<vector2D> localVertices2D(localVertices.size());
@@ -342,7 +354,7 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
         localVertices2D[i][1] = localVertices[i][1];
     }
 
-    tmp<pointField> localFaceCentres
+    tmp<pointField> tlocalFaceCentres
     (
         referenceCS().localPosition
         (
@@ -350,6 +362,20 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
         )
     );
 
+    pointField& localFaceCentres = tlocalFaceCentres();
+
+    // Shear to avoid degenerate cases
+    forAll(localFaceCentres, i)
+    {
+        point& pt = localFaceCentres[i];
+        const scalar magPt = mag(pt);
+        const point nptDir = pt/magPt;
+        if (magPt > ROOTVSMALL)
+        {
+            pt += pow(magPt, 1.1 + Foam::sqrt(SMALL))*nptDir;
+        }
+    }
+
     if (debug)
     {
         OFstream str
@@ -360,9 +386,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
         Pout<< "readSamplePoints :"
             << " Dumping face centres to " << str.name() << endl;
 
-        forAll(localFaceCentres(), i)
+        forAll(localFaceCentres, i)
         {
-            const point& p = localFaceCentres()[i];
+            const point& p = localFaceCentres[i];
             str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
         }
     }
@@ -380,9 +406,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
         Pout<< "readSamplePoints :"
             << " Dumping face centres to " << str.name() << endl;
 
-        forAll(localFaceCentres(), i)
+        forAll(localFaceCentres, i)
         {
-            const point& p = localFaceCentres()[i];
+            const point& p = localFaceCentres[i];
             str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
         }
     }