diff --git a/libraries/base/dp/hdllib.cfg b/libraries/base/dp/hdllib.cfg
index 34a2c49f89a64e30918443ee012c44e85d40f1d5..fdead4ddbcbdaa5a5e5274ef6dbb2a49e688a1da 100644
--- a/libraries/base/dp/hdllib.cfg
+++ b/libraries/base/dp/hdllib.cfg
@@ -300,6 +300,7 @@ test_bench_files =
     tb/vhdl/tb_tb_dp_block_validate_channel.vhd
     tb/vhdl/tb_tb_dp_bsn_align.vhd
     tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
+    tb/vhdl/tb_tb_mmp_dp_bsn_align_v2.vhd
     tb/vhdl/tb_tb_dp_bsn_source_v2.vhd
     tb/vhdl/tb_tb_dp_bsn_sync_scheduler.vhd
     tb/vhdl/tb_tb_dp_concat.vhd
@@ -357,7 +358,6 @@ regression_test_vhdl =
     tb/vhdl/tb_dp_latency_adapter.vhd
     tb/vhdl/tb_dp_shiftreg.vhd
     tb/vhdl/tb_dp_bsn_source.vhd
-    tb/vhdl/tb_mmp_dp_bsn_align_v2.vhd
     tb/vhdl/tb_mms_dp_bsn_source.vhd
     tb/vhdl/tb_mms_dp_bsn_source_v2.vhd
     tb/vhdl/tb_mmp_dp_bsn_sync_scheduler.vhd
@@ -372,6 +372,7 @@ regression_test_vhdl =
     tb/vhdl/tb_tb_dp_block_from_mm.vhd
     tb/vhdl/tb_tb_dp_block_validate_channel.vhd
     tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
+    tb/vhdl/tb_tb_mmp_dp_bsn_align_v2.vhd
     tb/vhdl/tb_tb_dp_bsn_source_v2.vhd
     tb/vhdl/tb_tb_dp_bsn_sync_scheduler.vhd
     tb/vhdl/tb_tb_dp_concat.vhd
diff --git a/libraries/base/dp/tb/vhdl/tb_mmp_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_mmp_dp_bsn_align_v2.vhd
index a7b2234a79a41c7fb71c5250e2a999c8d3cbb43e..d9fd975a4eb30877fd101260a963134aab754ba7 100644
--- a/libraries/base/dp/tb/vhdl/tb_mmp_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_mmp_dp_bsn_align_v2.vhd
@@ -45,6 +45,9 @@ USE work.dp_stream_pkg.ALL;
 USE work.tb_dp_pkg.ALL;
 
 ENTITY tb_mmp_dp_bsn_align_v2 IS
+  GENERIC (
+    g_lost_input  : BOOLEAN := TRUE   -- when TRUE use c_nof_streams-1 as lost input
+  );
 END tb_mmp_dp_bsn_align_v2;
 
 
@@ -60,11 +63,12 @@ ARCHITECTURE tb OF tb_mmp_dp_bsn_align_v2 IS
 
   -- Fixed dut generics
   -- . for dp_bsn_align_v2
-  CONSTANT c_nof_streams                : NATURAL := 3;
+  CONSTANT c_nof_streams                : NATURAL := 5;
   CONSTANT c_bsn_latency_max            : NATURAL := 1;
   CONSTANT c_nof_aligners_max           : POSITIVE := 1;   -- fixed in this tb
   CONSTANT c_block_size                 : NATURAL := 11;
   CONSTANT c_block_period               : NATURAL := 11;
+  CONSTANT c_block_per_sync             : NATURAL := 7;
   CONSTANT c_bsn_w                      : NATURAL := c_dp_stream_bsn_w;
   CONSTANT c_data_w                     : NATURAL := 16;
   CONSTANT c_data_replacement_value     : INTEGER := 17;
@@ -73,7 +77,7 @@ ARCHITECTURE tb OF tb_mmp_dp_bsn_align_v2 IS
   CONSTANT c_pipeline_output            : NATURAL := 1;
   CONSTANT c_rd_latency                 : NATURAL := 2;
   -- . for mms_dp_bsn_monitor_v2
-  CONSTANT c_nof_clk_per_sync           : NATURAL := 200*10**6;
+  CONSTANT c_nof_clk_per_sync           : NATURAL := c_block_per_sync * c_block_period;
   CONSTANT c_nof_input_bsn_monitors     : NATURAL := c_nof_streams;
   CONSTANT c_use_bsn_output_monitor     : BOOLEAN := TRUE;
 
@@ -96,8 +100,7 @@ ARCHITECTURE tb OF tb_mmp_dp_bsn_align_v2 IS
   CONSTANT c_bsn_init                   : NATURAL := 3;
   CONSTANT c_channel_init               : INTEGER := 0;
   CONSTANT c_err_init                   : NATURAL := 247;
-  CONSTANT c_sync_period                : NATURAL := 7;
-  CONSTANT c_sync_offset                : NATURAL := 2;
+  CONSTANT c_sync_bsn_offset            : NATURAL := 2;
   CONSTANT c_gap_size                   : NATURAL := c_block_period - c_block_size;
 
   -- DUT latency
@@ -138,8 +141,8 @@ ARCHITECTURE tb OF tb_mmp_dp_bsn_align_v2 IS
   SIGNAL reg_output_monitor_copi  : t_mem_copi := c_mem_copi_rst;
   SIGNAL reg_output_monitor_cipo  : t_mem_cipo;
 
-  SIGNAL mon_latency_input_arr    : t_nat_natural_arr(c_nof_streams-1 DOWNTO 0);
-  SIGNAL mon_latency_output       : NATURAL;
+  SIGNAL mon_latency_input_arr    : t_integer_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL mon_latency_output       : INTEGER;
 
   -- DP clock domain
   SIGNAL dp_clk                   : STD_LOGIC := '1';
@@ -173,7 +176,7 @@ ARCHITECTURE tb OF tb_mmp_dp_bsn_align_v2 IS
   SIGNAL out_err_arr              : t_err_arr;
 
   SIGNAL verify_done_arr          : STD_LOGIC_VECTOR(c_nof_streams-1 DOWNTO 0) := (OTHERS => '0');
-  SIGNAL verify_done              : STD_LOGIC;
+  SIGNAL verify_done              : STD_LOGIC := '0';
 
   SIGNAL hold_out_sop_arr         : STD_LOGIC_VECTOR(c_nof_streams-1 DOWNTO 0) := (OTHERS => '0');
   SIGNAL expected_out_bsn_arr     : t_bsn_arr;
@@ -257,15 +260,19 @@ BEGIN
     FOR I IN 0 TO c_nof_streams-1 LOOP
       proc_mem_mm_bus_rd(6 + I*c_reg_bsn_monitor_span, mm_clk, reg_input_monitor_cipo, reg_input_monitor_copi);
       proc_mem_mm_bus_rd_latency(1, mm_clk);
-      mon_latency_input_arr(I) <= TO_UINT(reg_input_monitor_cipo.rddata);
+      mon_latency_input_arr(I) <= TO_SINT(reg_input_monitor_cipo.rddata(31 DOWNTO 0));
       proc_common_wait_some_cycles(mm_clk, 1);
-      ASSERT mon_latency_input_arr(I) = func_input_delay(I) REPORT "Wrong input BSN monitor latency for input " & int_to_str(I) SEVERITY ERROR;
+      IF g_lost_input = TRUE AND I = c_nof_streams-1 THEN
+        ASSERT mon_latency_input_arr(I) = -1 REPORT "Wrong input BSN monitor latency timeout for input " & int_to_str(I) SEVERITY ERROR;
+      ELSE
+        ASSERT mon_latency_input_arr(I) = func_input_delay(I) REPORT "Wrong input BSN monitor latency for input " & int_to_str(I) SEVERITY ERROR;
+      END IF;
     END LOOP;
 
     -- Read output BSN monitor
     proc_mem_mm_bus_rd(6, mm_clk, reg_output_monitor_cipo, reg_output_monitor_copi);
     proc_mem_mm_bus_rd_latency(1, mm_clk);
-    mon_latency_output <= TO_UINT(reg_output_monitor_cipo.rddata);
+    mon_latency_output <= TO_SINT(reg_output_monitor_cipo.rddata(31 DOWNTO 0));
 
     proc_common_wait_some_cycles(mm_clk, 1);
     ASSERT mon_latency_output = c_total_latency REPORT "Wrong output BSN monitor latency" SEVERITY ERROR;
@@ -299,14 +306,14 @@ BEGIN
       FOR S IN 0 TO c_tb_nof_restart-1 LOOP
         v_bsn := c_bsn_init;
         FOR R IN 0 TO c_tb_nof_blocks-1 LOOP
-          v_sync := sel_a_b(v_bsn MOD c_sync_period = c_sync_offset, '1', '0');
+          v_sync := sel_a_b(v_bsn MOD c_block_per_sync = c_sync_bsn_offset, '1', '0');
           proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_data_w, v_data, 0, 0, c_block_size, v_channel, v_err, v_sync, TO_UVEC(v_bsn, c_bsn_w), dp_clk, sl1, ref_siso_arr(I), ref_sosi_arr(I));
           v_bsn  := v_bsn + 1;
           v_data := v_data + c_block_size;
           proc_common_wait_some_cycles(dp_clk, c_gap_size);  -- create gap between frames
         END LOOP;
         -- Create gap between restarts
-        proc_common_wait_some_cycles(dp_clk, 100);
+        proc_common_wait_some_cycles(dp_clk, 10);
         restart_cnt_arr(I) <= restart_cnt_arr(I) + 1;
       END LOOP;
 
@@ -314,10 +321,15 @@ BEGIN
       -- . default c_bsn_latency_max blocks remain in DUT buffer
       expected_out_bsn_arr(I) <= TO_UVEC(v_bsn-1 - c_align_latency_nof_blocks, c_bsn_w);
       expected_out_data_arr(I) <= TO_UVEC(v_data-1 - c_align_latency_nof_valid, c_data_w);
-      -- . default no data is lost, so all channel(0) lost data flags are 0
+      -- . default no data is lost, so all channel(bit 0) lost data flags are 0
       expected_out_channel_arr(I) <= TO_DP_CHANNEL(0);
-
-      proc_common_wait_some_cycles(dp_clk, 100);
+      IF g_lost_input = TRUE THEN
+        IF I = c_nof_streams-1 THEN
+          expected_out_data_arr(I) <= TO_UVEC(c_data_replacement_value, c_data_w);
+          expected_out_channel_arr(I) <= TO_DP_CHANNEL(1);
+        END IF;
+      END IF;
+      proc_common_wait_some_cycles(dp_clk, 10);
       verify_done_arr(I) <= '1';
       proc_common_wait_some_cycles(dp_clk, 1);
       verify_done_arr(I) <= '0';
@@ -329,15 +341,25 @@ BEGIN
     END PROCESS;
   END GENERATE;
 
-  verify_done <= verify_done_arr(0);
+  verify_done <= '1' WHEN verify_done_arr(0) = '1';
   restart_cnt <= restart_cnt_arr(0);
 
   dp_end <= vector_and(dp_end_arr);
 
   -- Model misalignment latency between the input streams to have different
   -- input BSN monitor latencies
-  gen_rx_sosi_arr : FOR I IN c_nof_streams-1 DOWNTO 0 GENERATE
-    in_sosi_arr(I) <= TRANSPORT ref_sosi_arr(I) AFTER func_input_delay(I) * c_dp_clk_period;
+  no_lost_input : IF g_lost_input = FALSE GENERATE
+    gen_in_sosi_arr : FOR I IN c_nof_streams-1 DOWNTO 0 GENERATE
+      in_sosi_arr(I) <= TRANSPORT ref_sosi_arr(I) AFTER func_input_delay(I) * c_dp_clk_period;
+    END GENERATE;
+  END GENERATE;
+
+  one_lost_input : IF g_lost_input = TRUE GENERATE
+    -- Model missing enabled input stream at index c_lost_input = c_nof_streams-1
+    in_sosi_arr(c_nof_streams-1) <= c_dp_sosi_rst;
+    gen_in_sosi_arr : FOR I IN c_nof_streams-2 DOWNTO 0 GENERATE
+      in_sosi_arr(I) <= TRANSPORT ref_sosi_arr(I) AFTER func_input_delay(I) * c_dp_clk_period;
+    END GENERATE;
   END GENERATE;
 
   ------------------------------------------------------------------------------
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_mmp_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_tb_mmp_dp_bsn_align_v2.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..7eea68cc3bdd53a99d18a3334f5df6d2a1fa3f16
--- /dev/null
+++ b/libraries/base/dp/tb/vhdl/tb_tb_mmp_dp_bsn_align_v2.vhd
@@ -0,0 +1,46 @@
+-- --------------------------------------------------------------------------
+-- Copyright 2021
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- --------------------------------------------------------------------------
+--
+-- Author: E. Kooistra, 2 march 2022
+-- Purpose: Regression multi tb for mmp_dp_bsn_align_v2
+-- Description:
+-- Usage:
+-- > as 3
+-- > run -all
+
+LIBRARY IEEE;
+USE IEEE.std_logic_1164.ALL;
+USE work.tb_dp_pkg.ALL;
+
+
+ENTITY tb_tb_mmp_dp_bsn_align_v2 IS
+END tb_tb_mmp_dp_bsn_align_v2;
+
+
+ARCHITECTURE tb OF tb_tb_mmp_dp_bsn_align_v2 IS
+
+  SIGNAL tb_end : STD_LOGIC := '0';  -- declare tb_end to avoid 'No objects found' error on 'when -label tb_end'
+
+BEGIN
+
+  -- g_lost_input          : BOOLEAN := FALSE
+
+  u_no_lost_input      : ENTITY work.tb_mmp_dp_bsn_align_v2 GENERIC MAP (FALSE);
+  u_one_lost_input     : ENTITY work.tb_mmp_dp_bsn_align_v2 GENERIC MAP (TRUE);
+
+END tb;