Mill strikes again

Ref all axes and the z fails with encoder too far from index pulse - it has done this before and it's an easy fix, just flip the belt round one step on the pulley and re-ref = all ok.
Went to set new tooling for a job, tell it to go to my tool setter position and find it's about 5mm out in X and 3mm in Y, Z is always Zero/home so that can't be out.
So, i re-homed and it did exactly the same thing, with no other option i reset the the setter ref positions and carried on.
Now, with a little red alarm going off in my head, I thought to check my master height probe position - easy to do as it is always tool 100 so i just set it as tool 99 so i can compare the two positions in the table.
Sure enough it was 3mm off!
So that is X/Y/C axes
ALL lost or changed their home/ref position??
No switches have been moved so now i can't trust the machine again.
It's getting worrying now as i have started to use it more and more but yet again I find I can't trust or rely on her

Anyone have any ideas on what can cause this - don't forget this is a servo machine with CSMIO-IP/a controller and Mach3.
Thanks