diff --git a/libraries/base/dp/src/vhdl/dp_packet_merge.vhd b/libraries/base/dp/src/vhdl/dp_packet_merge.vhd
index dea61acafacd9e2ce20ec0ea4c94ee819e882ec2..47c100423e3f48ae973bf7b94526e0f7ef922e38 100644
--- a/libraries/base/dp/src/vhdl/dp_packet_merge.vhd
+++ b/libraries/base/dp/src/vhdl/dp_packet_merge.vhd
@@ -318,7 +318,7 @@ BEGIN
     v.src_out.bsn     := r.src_out.bsn;
     v.src_out.channel := r.src_out.channel;
     v.src_out.empty   := r.src_out.empty;
-    v.src_out.err     := r.src_out.err;
+    v.src_out.err     := r.src_out.err OR snk_in.err; -- OR the err fields of the packets to reflect combined error status.
     v.src_out.sync    := '0';
     v.src_out.sop     := '0';
     v.src_out.eop     := '0';
@@ -329,6 +329,7 @@ BEGIN
         v.src_out.sync    := snk_in.sync;     -- only preserve sync when sync interval and nof_pkt interval are aligned, else sync gets lost but could still be recovered from BSN
         v.src_out.bsn     := snk_in.bsn;      -- use BSN     of first packet for merged packet
         v.src_out.channel := snk_in.channel;  -- use channel of first packet for merged packet
+        v.src_out.err     := snk_in.err;  
       END IF;
     END IF;
     
@@ -336,7 +337,6 @@ BEGIN
       IF r.pkt_cnt = r.nof_pkt-1 THEN
         v.src_out.eop   := '1';
         v.src_out.empty := snk_in.empty;
-        v.src_out.err   := snk_in.err;        -- use err of last packet for merged packet
       END IF;
     END IF;