Are you trying to run a one tool wonder machine?
If so you likely don't need to use the TLO's
If you're running a M6 with multiple tools then shoot me your script and I'll take a look.
You need to make sure the TLO (G43) is called before the zeroing of your Z axis to the material.
This way if multiple tools are called we are then just compensating for the difference between the tools rather than the entire tool length after zeroing.
You can see this happen if you have no TLO called and then zero your Z to the material, when your first G43 is called you'll be in a world of trouble.
I don't typically have the TLO called inside the M6 as it's normally called by the post in GCODE.
There are a lot of different ways to tackle this issue it's really what works best for you.
I really like to put a button on screen called "Job Setup" or something similar then call the TLO's and everything else I like prior to cutting with the click of a button.