diff --git a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C
index ce858a51b7c84b5f8438c1f81173248cc534f615..0335cf3abc6f3b9fd74cbc5136764125c9af0d74 100644
--- a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C
+++ b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C
@@ -315,12 +315,6 @@ void Foam::mergePolyMesh::addMesh(const polyMesh& m)
             }
         }
 
-        newOwn = own[faceI];
-        if (newOwn > -1) newOwn = renumberCells[newOwn];
-
-        newNei = nei[faceI];
-        if (newNei > -1) newNei = renumberCells[newNei];
-
         if (faceI < m.nInternalFaces() || faceI >= m.nFaces())
         {
             newPatch = -1;
@@ -330,6 +324,20 @@ void Foam::mergePolyMesh::addMesh(const polyMesh& m)
             newPatch = patchIndices[bm.whichPatch(faceI)];
         }
 
+        newOwn = own[faceI];
+        if (newOwn > -1) newOwn = renumberCells[newOwn];
+
+        if (newPatch > -1) 
+        {
+            newNei = -1;
+        } 
+        else 
+        {
+            newNei = nei[faceI];
+            newNei = renumberCells[newNei];
+        }
+
+
         newZone = fz.whichZone(faceI);
         newZoneFlip = false;
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C b/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
index d8f77272d978e0b107b1d069be65d8ce9dbaf1a4..e9a6d14069a05058ada95cb7a5074eff24490251 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
@@ -284,6 +284,7 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
             *this
         );
 
+        pointZones_.setSize(newPointZones.size());
         forAll (pointZones_, pzI)
         {
             pointZones_[pzI] = newPointZones[pzI];
@@ -304,6 +305,7 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
             *this
         );
 
+        faceZones_.setSize(newFaceZones.size());
         forAll (faceZones_, fzI)
         {
             faceZones_[fzI].resetAddressing
@@ -328,6 +330,7 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
             *this
         );
 
+        cellZones_.setSize(newCellZones.size());
         forAll (cellZones_, czI)
         {
             cellZones_[czI] = newCellZones[czI];