diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_tbuf_reader.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_tbuf_reader.vhd
index f417a36f52f4e4493850fdaacaeaf90365b8c0df..df2f73a7d7e84e2ec91646e4d32bd9b4d51628c1 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_tbuf_reader.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_tbuf_reader.vhd
@@ -337,9 +337,15 @@ begin
         v.dump_start_rsn := reg_dump_start_rsn_rw;
         v.dump_start_page := reg_dump_start_page_rw;
         if v.dump_start_page >= c_nof_pages_in_buffer then
+          -- Force to recovery value within buffer range, this will lead to read RSN errors due to mismatch with
+          -- dump_start_rsn.
           v.dump_start_page := 0;
         end if;
         v.dump_nof_pages := reg_dump_nof_pages_rw;
+        if v.dump_nof_pages >= c_nof_pages_in_buffer then
+          -- Limit to buffer size
+          v.dump_nof_pages := c_nof_pages_in_buffer;
+        end if;
         if dump_en = '1' then
           v.latency_cnt := c_start_latency;
           v.fsm := s_dump_start;