Secondly, I do not like you style of code writing at all. You never clear your tools prior to a tool change and you go down and to the XY location in the same move. That is just asking for trouble. Move to your XY location then go with a G43 line to bring to tool to the clearance plane. Like: G43 Z.2 H02 M08. You are just asking for trouble with G43 H02 M08, G00 X2. Y2. Z.2 or something like that.
Lastly, even though you may not technically need it, you should put a " G91 G28 Z0" and an M05 prior to just calling a tool change.