diff --git a/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd
index 78249aab7520bb47c4d9cd5349b74071898e3762..fd3981df8e0bf046b3ac5fcf5b806d6da1e99e21 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd
@@ -104,6 +104,7 @@ ARCHITECTURE rtl OF dp_bsn_monitor_v2 IS
   SIGNAL nxt_valid                   : STD_LOGIC;
   SIGNAL sop                         : STD_LOGIC;
   SIGNAL nxt_sop                     : STD_LOGIC;
+  SIGNAL sync_reg2                   : STD_LOGIC;
   SIGNAL sync_reg                    : STD_LOGIC;
   SIGNAL sync                        : STD_LOGIC;
   SIGNAL nxt_sync                    : STD_LOGIC;
@@ -163,7 +164,7 @@ BEGIN
   nxt_mon_nof_sop      <= nof_sop      WHEN sync='1' ELSE i_mon_nof_sop;
   nxt_mon_nof_err      <= nof_err      WHEN sync='1' ELSE i_mon_nof_err;
   nxt_mon_nof_valid    <= nof_valid    WHEN sync='1' ELSE i_mon_nof_valid;
-  nxt_mon_latency      <= latency      WHEN sync_reg='1' ELSE i_mon_latency;  -- use sync_reg due to ref_sync_reg
+  nxt_mon_latency      <= latency      WHEN sync_reg2='1' ELSE i_mon_latency;  -- use sync_reg2 due to ref_sync_reg
 
   nof_sop   <= cnt_sop;   
   nof_err   <= cnt_err;
@@ -171,9 +172,9 @@ BEGIN
   latency   <= cnt_latency;
 
   -- Register ref_sync to ease timing closure for ref_sync fanout to (many) dp_bsn_monitor_v2
-  -- instances. The ref_sync_reg is used to restart cnt_latency. Therefore the sync_reg
-  -- (instead of sync) is needed to capture latency (= cnt_latency) not too early, so capture
-  -- cnt_latency at or after the cnt_latency has restarted.
+  -- instances. The ref_sync_reg is used to restart cnt_latency. Therefore the sync_reg2
+  -- (instead of sync) is needed to capture latency (= cnt_latency) not too early, in case
+  -- ref_sync = in_sosi.sync, so capture cnt_latency at or after the cnt_latency has restarted.
   ref_sync_reg <= ref_sync WHEN rising_edge(clk);
 
   u_sync_timeout_cnt : ENTITY common_lib.common_counter
@@ -216,6 +217,7 @@ BEGIN
       err                       <= '0';
       sync                      <= '0';
       sync_reg                  <= '0';
+      sync_reg2                 <= '0';
       bsn                       <= (OTHERS=>'0');
       -- output
       mon_evt                   <= '0';
@@ -237,6 +239,7 @@ BEGIN
       err                       <= nxt_err;
       sync                      <= nxt_sync;
       sync_reg                  <= sync;
+      sync_reg2                 <= sync_reg;
       bsn                       <= nxt_bsn;
       -- output
       mon_evt                   <= nxt_mon_evt;