@ash100 the reason we haven't seen this before is that or recommendation us to home in open loop mode. You can do this by using M569 with D parameter to switch to open loop mode at the start if each homing file, and back to closed loop mode at the end.
Homing in closed loop mode may be possible with the right mechanics. The reason you get the position error is probably because after the homing switch is triggered, there is a latency of a few milliseconds before the command to stop the motor is received. If you can arrange your homing switch to trigger a small distance (2mm may be enough) before the physical stop is reached, so that the motor can overshoot the homing position slightly without hitting a hard stop, that may avoid the error. If it doesn't then I will need to amend the firmware to ignore position errors immediately after the motor is commanded to stop during homing.