UVM register fields values coverage is not performed on current configuration data

In my UVM regmodel generator I have added per uvm reg class definition covergroup on register field values.
Coverage is properly enabled both on address map and field values.
while reviewing coverage on status register I saw that coverage collection doesn’t match the read transaction performed.

In the uvm_reg_predcitor write function I see that coverage collection is sampled before the register field values are updated:

  begin
      uvm_reg_block blk = rg.get_parent();
      blk.XsampleX(map_info.offset,                             <--- blk and all the blks/regs under it are sampled
                   reg_item.kind == UVM_READ,
                   local_map);
  end

  rg.do_predict(reg_item, predict_kind, rw.byte_en);            <--- register field values are updated

This means covergroup on reg field values is sampled with previous value and not the current one.
In write access, I see the updated value only because I’m using set uvm_reg_field API before performing the write. Meaning when monitoring transactions not initiated by regmodel I will see same issue in write access.

Am I missing something here? what should I do in order to collect coverage on current register access value?

Regards,
Tomer