diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index 512cdebae0783870097fdcb28c026fc274c3dbfb..a1eede5e5e294ed6c74d0ac00835fafc757fdd2b 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -849,7 +849,8 @@ PACKAGE BODY sdp_pkg IS
     VARIABLE v_info : t_sdp_crosslets_info := info_rec;
   BEGIN
     FOR I IN 0 TO c_sdp_crosslets_info_nof_offsets-1 LOOP  -- step all offsets
-      v_info.offset_arr(I) := v_info.offset_arr(I) + v_info.step;
+      -- c_sdp_N_sub = 512 is power of 2, so MOD should be fine in synthesis (simpel skips MSbits, no need for division).
+      v_info.offset_arr(I) := (v_info.offset_arr(I) + v_info.step) MOD c_sdp_N_sub;
     END LOOP;
     RETURN v_info;
   END func_sdp_step_crosslets_info;