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 61312dd23f0adec7e5f8456970959977648923ee..87dcb99739f0d7daec770140c9dc65d42511126d 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -270,10 +270,10 @@ BEGIN
         FOR I IN 0 TO g_nof_streams-1 LOOP
           d.lost_data_flag := NOT v.filled_arr(I)(v.rd_pointer);
           IF stream_en_arr(I) = '1' THEN  -- use MM bit at sop
-            v.use_replacement_data(I) := d.lost_data_flag;  -- enabled stream, so replace if data was lost
-            v.mm_sosi.channel(I) := d.lost_data_flag;
+            v.use_replacement_data(I) := d.lost_data_flag;  -- enabled stream, so replace the data if the data was lost
+            v.mm_sosi.channel(I) := d.lost_data_flag;  -- enabled stream, so flag the data if the data was lost
           ELSE
-            v.use_replacement_data(I) := '1';  -- disabled stream, so replace data
+            v.use_replacement_data(I) := '1';  -- disabled stream, so replace the data, but do not flag the data as lost
           END IF;
         END LOOP;
       END IF;
@@ -309,6 +309,9 @@ BEGIN
 
       -- . output via MM interface
       mm_cipo_arr <= v.fill_cipo_arr;
+
+      -- . no output via DP streaming interface
+      out_sosi_arr <= (OTHERS => c_dp_sosi_rst);
     ELSE
       --------------------------------------------------------------------------
       -- Do the output via the DP streaming interface
@@ -318,20 +321,27 @@ BEGIN
       v.rd_copi := dp_copi;
       v.rd_copi.address := RESIZE_MEM_ADDRESS(ADD_UVEC(r.rd_offset, dp_copi.address));
 
-      -- . hold mm_sosi.sync, bsn
+      -- . hold mm_sosi.sync, bsn, channel
       IF r.mm_sosi.sop = '1' THEN
         v.dp_sosi := r.mm_sosi;
       END IF;
 
-      -- apply mm_sosi.sync and bsn at sop to all streams in out_sosi_arr
+      -- . pass on input data from the buffer
       d.out_sosi_arr := rd_sosi_arr;  -- = v.fill_cipo_arr in streaming format, contains the
                                       -- input data from the buffer or replacement data
       IF rd_sosi_arr(0).sop = '1' THEN
+        -- . at sop pass on input info from r.dp_sosi to all streams in out_sosi_arr
         d.out_sosi_arr := func_dp_stream_arr_set(d.out_sosi_arr, r.dp_sosi.sync, "SYNC");
         d.out_sosi_arr := func_dp_stream_arr_set(d.out_sosi_arr, r.dp_sosi.bsn, "BSN");
-        v.out_bsn := r.dp_sosi.bsn(g_bsn_w-1 DOWNTO 0);  -- hold BSN until next sop, to ease view in wave window
+        FOR I IN 0 TO g_nof_streams-1 LOOP
+          -- . pass on the lost flag per stream
+          d.out_sosi_arr(I).channel := RESIZE_DP_CHANNEL(slv(r.dp_sosi.channel(I)));
+        END LOOP;
+
+        -- . hold BSN until next sop, to ease view in wave window
+        v.out_bsn := r.dp_sosi.bsn(g_bsn_w-1 DOWNTO 0);
       ELSE
-        -- hold BSN until next sop, to ease view in wave window
+        -- . until next sop pass on BSN, to ease view in wave window
         d.out_sosi_arr := func_dp_stream_arr_set(d.out_sosi_arr, r.out_bsn, "BSN");
       END IF;