After it's done all that, and you tell it to return to XYZ zero, does it go to the same place where you set those values? If so, it's probably a problem with your tool paths. If not, it's either lost steps or a mechanical problem. "Closed loop" steppers can still lose steps; don't rule that out just because you've got them.