diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index d4167505e7209e8218ca5600eaea12f58c980f09..4230ea5319f4ddc0208c52eacb67a9942af5adc6 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -261,10 +261,10 @@ void GmshReader::_dispatch()
   std::vector<Array<CellType>> recv_cell_type_by_proc
       = dispatcher.exchange(mesh.connectivity().cellType());
 
-  for (int i_rank=0; i_rank < parallel::size(); ++i_rank) {
+  for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) {
     if (parallel::rank() == i_rank) {
       std::cout << "----- rank=" << i_rank << " -----\n";
-      for (int j_rank=0; j_rank < parallel::size(); ++j_rank) {
+      for (size_t j_rank=0; j_rank < parallel::size(); ++j_rank) {
         std::cout << "recv from " << j_rank << ':';
         for (size_t i=0; i<recv_cell_number_by_proc[j_rank].size(); ++i) {
           std::cout << ' ' << recv_cell_number_by_proc[j_rank][i] << '[' << name(recv_cell_type_by_proc[j_rank][i])<< "]:" << recv_cell_center_by_proc[j_rank][i];
diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index 1702d8642868e570b56ca3621c1efb01e9240659..22b89f34ef69df394ab8ea825eda2f8cddf0d0d1 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -134,7 +134,7 @@ class Messenger
   }
 
   template <typename DataType>
-  void _broadcast_value(DataType& data, int root_rank) const
+  void _broadcast_value(DataType& data, const size_t& root_rank) const
   {
     static_assert(not std::is_const_v<DataType>);
     static_assert(std::is_arithmetic_v<DataType>);
@@ -148,7 +148,7 @@ class Messenger
   }
 
   template <typename ArrayType>
-  void _broadcast_array(ArrayType& array, int root_rank) const
+  void _broadcast_array(ArrayType& array, const size_t& root_rank) const
   {
     using DataType = typename ArrayType::data_type;
     static_assert(not std::is_const_v<DataType>);
@@ -177,7 +177,7 @@ class Messenger
     Assert((sent_array.size() % m_size) == 0); // LCOV_EXCL_LINE
     Assert(sent_array.size() == recv_array.size()); // LCOV_EXCL_LINE
 
-    const int count = sent_array.size()/m_size;
+    const size_t count = sent_array.size()/m_size;
 
     MPI_Datatype mpi_datatype
         = Messenger::helper::mpiType<SendDataType>();
@@ -404,7 +404,7 @@ class Messenger
 
   template <typename DataType>
   PASTIS_INLINE
-  void broadcast(DataType& data, int root_rank) const
+  void broadcast(DataType& data, const size_t& root_rank) const
   {
     static_assert(not std::is_const_v<DataType>,
                   "cannot broadcast const data");
@@ -427,19 +427,20 @@ class Messenger
 
   template <typename DataType>
   PASTIS_INLINE
-  void broadcast(Array<DataType>& array, int root_rank) const
+  void broadcast(Array<DataType>& array,
+                 const size_t& root_rank) const
   {
     static_assert(not std::is_const_v<DataType>,
                   "cannot broadcast array of const");
     if constexpr(std::is_arithmetic_v<DataType>) {
-      int size = array.size();
+      size_t size = array.size();
       _broadcast_value(size, root_rank);
       if (m_rank != root_rank) {
         array = Array<DataType>(size); // LCOV_EXCL_LINE
       }
       _broadcast_array(array, root_rank);
     } else if constexpr(std::is_trivial_v<DataType>) {
-      int size = array.size();
+      size_t size = array.size();
       _broadcast_value(size, root_rank);
       if (m_rank != root_rank) {
         array = Array<DataType>(size); // LCOV_EXCL_LINE
@@ -560,14 +561,14 @@ allToAll(const Array<DataType>& array)
 
 template <typename DataType>
 PASTIS_INLINE
-void broadcast(DataType& data, int root_rank)
+void broadcast(DataType& data, const size_t& root_rank)
 {
   messenger().broadcast(data, root_rank);
 }
 
 template <typename DataType>
 PASTIS_INLINE
-void broadcast(Array<DataType>& array, int root_rank)
+void broadcast(Array<DataType>& array, const size_t& root_rank)
 {
   messenger().broadcast(array, root_rank);
 }
diff --git a/tests/mpi_test_Messenger.cpp b/tests/mpi_test_Messenger.cpp
index ecad3949c1b25350d7b966f31ae45917ba03947f..4366aabe9b8f3c922315c187ef60602b5936344a 100644
--- a/tests/mpi_test_Messenger.cpp
+++ b/tests/mpi_test_Messenger.cpp
@@ -229,7 +229,8 @@ TEST_CASE("Messenger", "[mpi]") {
       REQUIRE(gather_array.size() == parallel::size());
 
       for (size_t i=0; i<gather_array.size(); ++i) {
-        REQUIRE((gather_array[i] == (3+i)*2));
+        const int expected_value = (3+i)*2;
+        REQUIRE(gather_array[i] == expected_value);
       }
     }
 
@@ -262,7 +263,8 @@ TEST_CASE("Messenger", "[mpi]") {
       REQUIRE(gather_array.size() == array.size()*parallel::size());
 
       for (size_t i=0; i<gather_array.size(); ++i) {
-        REQUIRE((gather_array[i] == (3+i/array.size())*2+(i%array.size())));
+        const int expected_value = (3+i/array.size())*2+(i%array.size());
+        REQUIRE((gather_array[i] == expected_value));
       }
     }
 
@@ -276,7 +278,8 @@ TEST_CASE("Messenger", "[mpi]") {
       REQUIRE(gather_array.size() == array.size()*parallel::size());
 
       for (size_t i=0; i<gather_array.size(); ++i) {
-        REQUIRE((gather_array[i] == (3+i/array.size())*2+(i%array.size())));
+        const int expected_value = (3+i/array.size())*2+(i%array.size());
+        REQUIRE((gather_array[i] == expected_value));
       }
     }