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