diff --git a/src/sampling/meshToMeshInterpolation/meshToMesh/calculateMeshToMeshAddressing.C b/src/sampling/meshToMeshInterpolation/meshToMesh/calculateMeshToMeshAddressing.C
index fda5525f095beb2b2788198f01e80c531078cde4..83716c95c4f98c29ad6ec25994a13771911c9736 100644
--- a/src/sampling/meshToMeshInterpolation/meshToMesh/calculateMeshToMeshAddressing.C
+++ b/src/sampling/meshToMeshInterpolation/meshToMesh/calculateMeshToMeshAddressing.C
@@ -171,13 +171,15 @@ void Foam::meshToMesh::calcAddressing()
                     wallBb.max() + vector(typDim, typDim, typDim)
                 );
 
+                // Note: allow more levels than in meshSearch. Assume patch
+                // is not as big as all boundary faces
                 indexedOctree<treeDataFace> oc
                 (
                     treeDataFace(false, fromPatch),
                     shiftedBb,  // overall search domain
-                    8,          // maxLevel
+                    12,         // maxLevel
                     10,         // leafsize
-                    3.0         // duplicity
+                    6.0         // duplicity
                 );
 
                 const vectorField::subField centresToBoundary =
@@ -185,7 +187,7 @@ void Foam::meshToMesh::calcAddressing()
 
                 boundaryAddressing_[patchi].setSize(toPatch.size());
 
-                scalar distSqr = sqr(GREAT);
+                scalar distSqr = sqr(wallBb.mag());
 
                 forAll(toPatch, toi)
                 {