diff --git a/src/mesh/MeshRandomizer.hpp b/src/mesh/MeshRandomizer.hpp
index 71827bf2aa850227e5ab42319fae027d4b4000cf..36b3b169d37d27d473e9691242bb7882f993bb62 100644
--- a/src/mesh/MeshRandomizer.hpp
+++ b/src/mesh/MeshRandomizer.hpp
@@ -102,7 +102,6 @@ class MeshRandomizer
   void
   _applyBC(NodeValue<Rd>& shift) const
   {
-    std::cout << "applying " << m_boundary_condition_list.size() << " boundary conditions\n";
     for (auto&& boundary_condition : m_boundary_condition_list) {
       std::visit(
         [&](auto&& bc) {
@@ -183,19 +182,22 @@ class MeshRandomizer
       });
 
     std::sort(&node_numbers_to_node_id[0], &node_numbers_to_node_id[0] + node_numbers_to_node_id.size(),
-              [](IdCorrespondance& a, IdCorrespondance& b) { return a.first < b.first; });
+              [](IdCorrespondance a, IdCorrespondance b) { return a.first < b.first; });
 
     RandomEngine& random_engine = RandomEngine::instance();
 
+    Assert(isSynchronized(random_engine), "seed is not synchronized when entering mesh randomization");
+
     NodeValue<Rd> shift_r{connectivity};
 
     int i_node_number = 0;
     for (size_t i = 0; i < node_numbers_to_node_id.size(); ++i) {
       const auto [node_number, node_id] = node_numbers_to_node_id[i];
-      for (; i_node_number < node_number; ++i_node_number) {
+      while (i_node_number < node_number) {
         for (size_t j = 0; j < Dimension; ++j) {
           dis(random_engine.engine());
         }
+        ++i_node_number;
       }
 
       double max_delta = max_delta_xr[node_id];
@@ -214,13 +216,22 @@ class MeshRandomizer
       parallel::allReduceMax(node_numbers_to_node_id[node_numbers_to_node_id.size() - 1].first);
 
     // Advances random engine to preserve CPU random number generators synchronization
-    for (; i_node_number < max_node_number; ++i_node_number) {
+    for (; i_node_number <= max_node_number; ++i_node_number) {
       for (size_t j = 0; j < Dimension; ++j) {
         dis(random_engine.engine());
       }
     }
 
     this->_applyBC(shift_r);
+
+#ifndef NDEBUG
+    if (not isSynchronized(shift_r)) {
+      throw UnexpectedError("randomized mesh coordinates are not synchronized");
+    }
+#endif   // NDEBUG
+
+    Assert(isSynchronized(random_engine), "seed is not synchronized after mesh randomization");
+
     return shift_r;
   }