diff --git a/bfps/cpp/particles/particles_field_computer.hpp b/bfps/cpp/particles/particles_field_computer.hpp
index 96d58a26849d31203b2e4c1a4ea8722327c3c0cb..8d91ac820ba83a5e76877848621f036712a9cc56 100644
--- a/bfps/cpp/particles/particles_field_computer.hpp
+++ b/bfps/cpp/particles/particles_field_computer.hpp
@@ -192,7 +192,7 @@ public:
 
     virtual int pbc_field_layer(const real_number& a_z_pos, const int idx_dim) const final {
         const real_number shifted_pos = a_z_pos - spatial_box_offset[idx_dim];
-        const int nb_level_to_pos = int(shifted_pos/box_step_width[idx_dim]);
+        const int nb_level_to_pos = int(floor(shifted_pos/box_step_width[idx_dim]));
         const int int_field_grid_dim = int(field_grid_dim[idx_dim]);
         const int pbc_level = ((nb_level_to_pos%int_field_grid_dim)+int_field_grid_dim)%int_field_grid_dim;
         assert(0 <= pbc_level && pbc_level < int(field_grid_dim[idx_dim]));