Hi Simon,
There is an error in the implementation in that it does not detect/prevent overflow errors in the offset summation block. Your options are to try to "catch" this error in your FPGA or to implement a similar offset correction algorithm within your FPGA that tolerates overflow. A simple digital low pass filter with long time constant can be used to measure the offset error.
Regards,
Matt Guibord