Something is clearly wrong - You cannot get large negative distances. And the status byte is always between 0 and 20 (plus 255).
Step one - meticulously check all the status returns on every call.
But all the problems I've seen with this chip are I2C problems.
There are two types: 1 is a byte-swap or word-swap. Your data is transmitted, so it looks right, but the sensor gets the wrong meaning.
The other issue is the long WrMulti. Some MCUs cannot handle those long writes at initialization.
As you are getting a result - even a bad one, it looks like you are past the long write issue.
So I'm going to guess you have a word swap issue.
Take that bit of code above and try this.
Use 4 WrByte calls to write 4 consecutive bytes starting at location 100. Then read it back with 2 WrWord() calls, and 1 WrDWord. You should get the data you wrote - in the correct order.
And if you wanted to be complete you, could do a 4-byte WrMulti, and read it back 3 other ways.
-john