Oops, I see Graham posted while I typing.
I THINK what Graham is saying is you need to be far enough away from the axis that's in the move where the tool diameter is applied for it to move to the point taking into consideration half the tool diameter.
That said, what you're saying is the EXACT same code works with D3, but NOT with D2 nor D1? If that's indeed true, it almost HAS to be the diameter in the tool table. If the code is different, than all bets are off.
Is that code hand written or generated by some CAM software? Is that A axis rotary or linear? Somehow that code doesn't look right, but not knowing how your A axis works, it's pretty hard to read and tell what's happening!!
It seems the move when the G41/G42 is being applied is very small, .016/.017, at least in the first couple. That means the tool has to be pretty tiny in order to apply the tool radius in that move!!
I'm probably all wet on this because I really can't make heads or tails of your code!!
Tom