diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index 8f3b6362d827df82c8838bee8936728d40071ac6..5742d0c5d84740f81a9c1f9e6634d58d5f260214 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -162,12 +162,21 @@ MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(const TinyVector<2, double>& norma
 template <>
 template <typename MeshType>
 PUGS_INLINE TinyVector<1, double>
-MeshFlatNodeBoundary<1>::_getNormal(const MeshType&)
+MeshFlatNodeBoundary<1>::_getNormal(const MeshType& mesh)
 {
   static_assert(MeshType::Dimension == 1);
   using R = TinyVector<1, double>;
 
-  if (m_node_list.size() != 1) {
+  const size_t number_of_bc_nodes = [&]() {
+    size_t number_of_bc_nodes = 0;
+    auto node_is_owned        = mesh.connectivity().nodeIsOwned();
+    for (size_t i_node = 0; i_node < m_node_list.size(); ++i_node) {
+      number_of_bc_nodes += (node_is_owned[m_node_list[i_node]]);
+    }
+    return parallel::allReduceMax(number_of_bc_nodes);
+  }();
+
+  if (number_of_bc_nodes != 1) {
     perr() << "Node boundaries in 1D require to have exactly 1 node\n";
     std::exit(1);
   }