diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index b3aa5e18277b234c652f1f922a83d3af8d7c327d..6f3d10539e655a3d72d60c9b3f059aeef5e869e8 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -359,6 +359,7 @@ class MeshDispatcher
   {
     const auto& face_to_cell_matrix
         = m_mesh.connectivity().faceToCellMatrix();
+    const auto& cell_number = m_mesh.connectivity().cellNumber();
 
 #warning could use a better policy
     FaceValue<int> face_new_owner(m_mesh.connectivity());
@@ -368,7 +369,7 @@ class MeshDispatcher
 
         for (size_t j=1; j<face_to_cell.size(); ++j) {
           const CellId J = face_to_cell[j];
-          if (J<Jmin) {
+          if (cell_number[J] < cell_number[Jmin]) {
             Jmin=J;
           }
         }
@@ -383,6 +384,7 @@ class MeshDispatcher
   {
     const auto& node_to_cell_matrix
         = m_mesh.connectivity().nodeToCellMatrix();
+    const auto& cell_number = m_mesh.connectivity().cellNumber();
 
 #warning could use a better policy
     NodeValue<int> node_new_owner(m_mesh.connectivity());
@@ -392,7 +394,7 @@ class MeshDispatcher
 
         for (size_t j=1; j<node_to_cell.size(); ++j) {
           const CellId J = node_to_cell[j];
-          if (J<Jmin) {
+          if (cell_number[J] < cell_number[Jmin]) {
             Jmin=J;
           }
         }