diff --git a/dumux/discretization/cellcentered/mpfa/omethod/localassembler.hh b/dumux/discretization/cellcentered/mpfa/omethod/localassembler.hh
index 21da128381c710fc1edbb1327ca2fe3245193506..32db83cc6a4f2806055f5cf79ef3d06a5324c594 100644
--- a/dumux/discretization/cellcentered/mpfa/omethod/localassembler.hh
+++ b/dumux/discretization/cellcentered/mpfa/omethod/localassembler.hh
@@ -250,9 +250,11 @@ private:
                     {
                         if (abs(wijk[faceIdx][0][localDir]) < wijZeroThresh)
                         {
-                            insideZeroWij = !curGlobalScvf.boundary();
                             if (!curIsDirichlet)
+                            {
+                                insideZeroWij = true;
                                 faceMarkers.emplace_back( std::make_pair(curLocalDofIdx, faceIdx) );
+                            }
                         }
                     }
 
@@ -308,7 +310,8 @@ private:
                             const auto& otherLocalScvf = iv.localScvf(otherLocalScvfIdx);
                             const auto otherLocalDofIdx = otherLocalScvf.localDofIndex();
 
-                            if (otherLocalDofIdx == curLocalDofIdx && insideZeroWij)
+                            // check for zero transmissibilities (skip if inside has been zero already)
+                            if (otherLocalDofIdx == curLocalDofIdx && !insideZeroWij)
                                 if (abs(wijk[faceIdx][idxOnScvf][localDir]) < wijZeroThresh)
                                     faceMarkers.emplace_back( std::make_pair(curLocalDofIdx, faceIdx) );