Not important at this point but you have East and North reversed.

I'm try to do the same thing with HMC5983, I can read data which seems reasonable ie very different and repeatable for the four directions, but I can't seem to produce a heading less than about 180.

Typical raw numbers

x y
N 215 -176
E -76 7
S -265 -287
W -12 -474

Seems like an awful lot of negative numbers? I wonder if I've killed it?

George