In theory it could be zero if CFO is 0.0
But carrier integrator has high resolution so it is probably unlikely to happen.
Maybe you reads zero preamble detection failed? In that case, carrier is not even started - so could be zero. Do you see any timeouts (see 0x0F, Status register).
It could also have been that preamble was detected initially, and the algorithm decided it was false preamble, so it would reset everything.
In both cases no SFD would be received.
Could you confirm that you read zero in after successful frame reception? Or maybe you’re reading it too late and it has already been cleared.
I suspect you have some errors like time out. Have a look at section 4 Message Reception in the user manual.
Also APS022, our debug application node would be of a help