diff --git a/modules/wishbone/wishbone_pkg.vhd b/modules/wishbone/wishbone_pkg.vhd
index 7a832c3c75e94cf898b55e10b2a44008c7b8d5bc..98feaa16c00dd5691b5b23445f2b80c72bb5ecd0 100644
--- a/modules/wishbone/wishbone_pkg.vhd
+++ b/modules/wishbone/wishbone_pkg.vhd
@@ -1078,8 +1078,8 @@ package body wishbone_pkg is
       variable result 	 : std_logic_vector(pval'range);   
    begin
      for i in pval'range loop 
-      n_sel(i) := sel(i / 8);
-      n_val(i) := ival(i);
+      n_sel(i) := sel((i-pval'low) / 8); -- subtract the low index for when register width > wishbone data width
+      n_val(i) := ival(i-pval'low);
      end loop;
 
      if(mode = "set") then