diff --git a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
index 9042f050f7797b53fec3194857d70a0b6aac009c..eae4c4d60fc384fdc15638f8d309c1c7d514614b 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -275,12 +275,16 @@ begin
       v.bsn_arr(v.wr_blk_pointer) := w.ref_sosi.bsn(g_bsn_w - 1 downto 0);
 
       -- . update read block pointer at g_bsn_latency_max blocks behind the
-      --   reference write pointer, dependent on the node_index. For
-      --   g_bsn_latency_max = 1 the node_index = 0 fixed. For
-      --   g_bsn_latency_max > 1, node_index is the first BSN aligner in a
-      --   chain. Each subsequent node in the chain then has to account for
-      --   g_bsn_latency_max additional block latency.
-      v.rd_blk_pointer := v.wr_blk_pointer - g_bsn_latency_max * (1 + node_index);
+      --   reference write pointer, dependent on the node_index:
+      --   - for g_nof_aligners_max = 1 the node_index = 0 fixed
+      --   - for g_nof_aligners_max > 1, node_index is the first BSN aligner in
+      --     a chain. Each subsequent node in the chain then has to account
+      --     for g_bsn_latency_max additional block latency.
+      if g_nof_aligners_max = 1 then
+        v.rd_blk_pointer := v.wr_blk_pointer - g_bsn_latency_max;
+      else
+        v.rd_blk_pointer := v.wr_blk_pointer - g_bsn_latency_max * (1 + node_index);
+      end if;
       if v.rd_blk_pointer < 0 then
         v.rd_blk_pointer := v.rd_blk_pointer + c_buffer_nof_blocks;
       end if;