diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index 0f8a3a8ef3292b6dc867f29ea8e3c4eb558b2bc3..f73c96a143b62cb07f0daf25237ddb59bc4eef9d 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -73,7 +73,7 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_N_crosslets_max           : NATURAL := 7;
   CONSTANT c_sdp_N_fft                     : NATURAL := 1024;
   CONSTANT c_sdp_N_pn_lb                   : NATURAL := 16;
-  CONSTANT c_sdp_N_pn_max                  : NATURAL := 16;
+  CONSTANT c_sdp_N_pn_max                  : NATURAL := 16;  -- gn 0:31 --> pn 0:15, pn 0:15 per antenna band
   CONSTANT c_sdp_N_pol                     : NATURAL := 2;
   CONSTANT c_sdp_N_pol_bf                  : NATURAL := 2;
   CONSTANT c_sdp_N_ring_lanes_max          : NATURAL := 8;
@@ -540,12 +540,11 @@ PACKAGE BODY sdp_pkg IS
     -- MOD it is possible to do:
     --
     --   pn_index = gn_index[3:0], because log2(16) = 4
-    CONSTANT c_pn_w  : NATURAL := ceil_log2(c_sdp_N_pn_max);  -- = 4
-    -- use sufficient bits to fit both PN index and GN index in v_index
-    CONSTANT c_w     : NATURAL := ceil_log2(c_sdp_N_pn_max + gn_index);
-    CONSTANT c_index : STD_LOGIC_VECTOR(c_w-1 DOWNTO 0) := TO_UVEC(gn_index, c_w);
+    CONSTANT c_w  : NATURAL := ceil_log2(c_sdp_N_pn_max);  -- = 4
+
+    VARIABLE v_index : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0) := TO_UVEC(gn_index, c_word_w);
   BEGIN
-    RETURN TO_UINT(c_index(c_pn_w-1 DOWNTO 0));
+    RETURN TO_UINT(v_index(c_w-1 DOWNTO 0));
   END func_sdp_gn_index_to_pn_index;
 
   FUNCTION func_sdp_modulo_N_sub(sub_index : NATURAL) RETURN NATURAL IS