diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.C
index 0a233e97af5d1e953c0638ec4b77fdadcb23f491..bbfe0cf684445793b31441ce4be322eacae9396d 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.C
@@ -110,6 +110,7 @@ bool Foam::localPointRegion::isDuplicate
 void Foam::localPointRegion::countPointRegions
 (
     const polyMesh& mesh,
+    const boolList& candidatePoint,
     const Map<label>& candidateFace,
     faceList& minRegion
 )
@@ -144,38 +145,45 @@ void Foam::localPointRegion::countPointRegions
             forAll(f, fp)
             {
                 label pointI = f[fp];
-                label region = minRegion[faceI][fp];
 
-                if (minPointRegion[pointI] == -1)
-                {
-                    minPointRegion[pointI] = region;
-                }
-                else if (minPointRegion[pointI] != region)
+                // Even points which were not candidates for splitting might
+                // be on multiple baffles that are being split so check.
+
+                if (candidatePoint[pointI])
                 {
-                    // Multiple regions for this point. Add.
-                    Map<label>::iterator iter = meshPointMap_.find(pointI);
-                    if (iter != meshPointMap_.end())
+                    label region = minRegion[faceI][fp];
+
+                    if (minPointRegion[pointI] == -1)
                     {
-                        labelList& regions = pointRegions[iter()];
-                        if (findIndex(regions, region) == -1)
-                        {
-                            label sz = regions.size();
-                            regions.setSize(sz+1);
-                            regions[sz] = region;
-                        }
+                        minPointRegion[pointI] = region;
                     }
-                    else
+                    else if (minPointRegion[pointI] != region)
                     {
-                        label localPointI = meshPointMap_.size();
-                        meshPointMap_.insert(pointI, localPointI);
-                        labelList regions(2);
-                        regions[0] = minPointRegion[pointI];
-                        regions[1] = region;
-                        pointRegions.append(regions);
-                    }
+                        // Multiple regions for this point. Add.
+                        Map<label>::iterator iter = meshPointMap_.find(pointI);
+                        if (iter != meshPointMap_.end())
+                        {
+                            labelList& regions = pointRegions[iter()];
+                            if (findIndex(regions, region) == -1)
+                            {
+                                label sz = regions.size();
+                                regions.setSize(sz+1);
+                                regions[sz] = region;
+                            }
+                        }
+                        else
+                        {
+                            label localPointI = meshPointMap_.size();
+                            meshPointMap_.insert(pointI, localPointI);
+                            labelList regions(2);
+                            regions[0] = minPointRegion[pointI];
+                            regions[1] = region;
+                            pointRegions.append(regions);
+                        }
 
-                    label meshFaceMapI = meshFaceMap_.size();
-                    meshFaceMap_.insert(faceI, meshFaceMapI);
+                        label meshFaceMapI = meshFaceMap_.size();
+                        meshFaceMap_.insert(faceI, meshFaceMapI);
+                    }
                 }
             }
         }
@@ -194,7 +202,9 @@ void Foam::localPointRegion::countPointRegions
 
             forAll(f, fp)
             {
-                if (meshPointMap_.found(f[fp]))
+                // Note: candidatePoint test not really necessary but
+                // speeds up rejection.
+                if (candidatePoint[f[fp]] && meshPointMap_.found(f[fp]))
                 {
                     label meshFaceMapI = meshFaceMap_.size();
                     meshFaceMap_.insert(faceI, meshFaceMapI);
@@ -421,7 +431,7 @@ void Foam::localPointRegion::calcPointRegions
 
 
     // Count regions per point
-    countPointRegions(mesh, candidateFace, minRegion);
+    countPointRegions(mesh, candidatePoint, candidateFace, minRegion);
     minRegion.clear();
 
 
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
index e9c03a37e596fe7330b47f8708428a8a5f48e87f..95d05d3aedf29c775c65c9e68583fe06a86d35ce 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
@@ -92,6 +92,7 @@ class localPointRegion
         void countPointRegions
         (
             const polyMesh& mesh,
+            const boolList& candidatePoint,
             const Map<label>& candidateFace,
             faceList& minRegion
         );