i think do offset tool per zone its mistake,tool must be constant, its spindel per tool per machine
bater change the zone in script
for example in my machine i change the origin according board length:
if(varP<2500) then
G="G56"
end
if(varP>2500 and varP<2770) then
G="G55"
end
if(varP>2750) then
G="G54"
end
GCode =""
GCode = GCode ..G
mc.mcCntlGcodeExecuteWait (0, GCode) ---choose the origin acording board length