I suggested a way to figure out which layer has the problem in a previous discussion, but never heard back:
The general idea is to run each layer separately and verify the machine position after each one, with the intent of figuring out which layer isn’t where the controller thinks it is.
If that makes sense, give it a try and report back which layer is incorrectly positioned.