diff --git a/sources/interlaken/transmitter/interlaken_transmitter_channel.vhd b/sources/interlaken/transmitter/interlaken_transmitter_channel.vhd
index 3a75117dfcb2c4f86cecd4b80933013dd83889f5..18977f7f145ad6e83c3a399b809f684a57d24f01 100644
--- a/sources/interlaken/transmitter/interlaken_transmitter_channel.vhd
+++ b/sources/interlaken/transmitter/interlaken_transmitter_channel.vhd
@@ -201,12 +201,12 @@ begin
         if(insert_burst_short = '1') then
             idle_pad <= '1';
             burstCounter := burstCounter + 8;
-            if burstCounter = (BurstShort) then
+            if burstCounter >= (BurstShort) then -- equal or bigger (since EOP/tlast and burst short can trigger same moment and miss the equal frame)
                 burstCounter := 0;
                 insert_burst_short <= '0';
                 idle_pad <= '0';
             end if;
-        elsif SOP_FLAG = '1' then
+        elsif SOP_FLAG = '1' or insert_burst_seop = '1' then -- reset counter after SOP of SEOP word
             burstCounter :=  0; --SOP is not counted in frame length, so all others are counter
         elsif(m_axis_mapped.tvalid = '1' and m_axis_tready_mapped = '1' and axis_burst_mode = '0') then
             if (m_axis_mapped.tlast = '0') then