diff --git a/arbor/include/arbor/util/hash_def.hpp b/arbor/include/arbor/util/hash_def.hpp
index 933a3237e2654c9382eac349d8af1c56da75657b..261e112948f40b95ebb6300ac850ba619d9046c2 100644
--- a/arbor/include/arbor/util/hash_def.hpp
+++ b/arbor/include/arbor/util/hash_def.hpp
@@ -55,7 +55,7 @@ inline constexpr std::size_t internal_hash(T&& data) {
     if constexpr (std::is_integral_v<D>) {
         unsigned long long bytes = data;
         std::size_t hash = offset_basis;
-        for (int ix = 0; ix < sizeof(data); ++ix) {
+        for (std::size_t ix = 0; ix < sizeof(data); ++ix) {
             uint8_t byte = bytes & 255;
             bytes >>= 8;
             hash = hash ^ byte;
@@ -66,7 +66,7 @@ inline constexpr std::size_t internal_hash(T&& data) {
     if constexpr (std::is_pointer_v<D>) {
         unsigned long long bytes = reinterpret_cast<unsigned long long>(data);
         std::size_t hash = offset_basis;
-        for (int ix = 0; ix < sizeof(data); ++ix) {
+        for (std::size_t ix = 0; ix < sizeof(data); ++ix) {
             uint8_t byte = bytes & 255;
             bytes >>= 8;
             hash = hash ^ byte;
diff --git a/test/unit/test_probe.cpp b/test/unit/test_probe.cpp
index 90771c9800a1d5cd8d45d83ee0390304427786b7..fc87b1cd4300bed134297ee32e7306043a514343 100644
--- a/test/unit/test_probe.cpp
+++ b/test/unit/test_probe.cpp
@@ -842,7 +842,7 @@ void run_axial_and_ion_current_sampled_probe_test(context ctx) {
                 ASSERT_NE(nullptr, s);
                 auto [s_beg, s_end] = *s;
                 ASSERT_EQ(s_end - s_beg, n_cv);
-                for (int ix = 0; ix < n_cv; ++ix) i_memb[ix] = *s_beg++;
+                for (unsigned ix = 0; ix < n_cv; ++ix) i_memb[ix] = *s_beg++;
             }
             else if (pm.id.tag == "I-stimulus") {
                 auto m = any_cast<const mcable_list*>(pm.meta);
@@ -853,7 +853,7 @@ void run_axial_and_ion_current_sampled_probe_test(context ctx) {
                 ASSERT_NE(nullptr, s);
                 auto [s_beg, s_end] = *s;
                 ASSERT_EQ(s_end - s_beg, n_cv);
-                for (int ix = 0; ix < n_cv; ++ix) i_stim[ix] = *s_beg++;
+                for (unsigned ix = 0; ix < n_cv; ++ix) i_stim[ix] = *s_beg++;
             }
             else {
                 // Probe id tells us which axial current this is.