We currently have a UR that performs screw operations using an automatic Kolver screwdriver. The UR will move to the various screw positions and re-torque the screws. Based on the operators inputs, the positions of the screws are hard coded in, they do not use Waypoints, by assigning a variable (Screw_X) to a certain position. A subprogram then moves to the current screw position and the screwdriver re-torques the screws. All of this has worked until we installed a new tool changer. The tool changer adds Z-distance to the current TCP and also rotates the TCP 90 degrees (previously X:0mm, Y:-67mm, now X:67mm, Y:0mm). We reconfigured the TCP and noticed that the tool didn't move to the correct screw positions. This was to be expected so we went through and did some testing. We found that when we set a Waypoint to move to a certain screw, the tool moved exactly where it needed to. However, when we transferred the coordinated of the Waypoint and put them in the hard coded screw components, the tool deviated drastically from where it was supposed to. We have triple checked our numbers and nothing seems to fix this issue. Hoping that someone has experience with this and is able to help. Thanks in advance!