diff --git a/libraries/io/eth/src/vhdl/eth_checksum.vhd b/libraries/io/eth/src/vhdl/eth_checksum.vhd
index bfe6208f70468f77e50c6310d951bb0b882de2d1..aead4db3f1fa2b1d8d07ca5f448bef5d9b97d09c 100644
--- a/libraries/io/eth/src/vhdl/eth_checksum.vhd
+++ b/libraries/io/eth/src/vhdl/eth_checksum.vhd
@@ -150,7 +150,7 @@ BEGIN
                   sum;
   
   -- Accumulate the last carry
-  last_dat    <= sum(c_halfword_w-1 DOWNTO 0) + sum_cin;
+  last_dat    <= sum(c_halfword_w-1 DOWNTO 0) + sum_cin + word_sum_cin; -- Also add word_sum_cin in the case that the last word has a carry.
                     
   -- Checksum is 1-complement of the sum
   nxt_checksum     <= NOT(STD_LOGIC_VECTOR(last_dat)) WHEN prev_in_eop_dly='1' ELSE i_checksum;