I don't think it was the display bug as I did try running the test programs. The DROs matched the screen.
Mind you, I agree 100% that the display itself has some problems. Apparently the display driver uses slightly different code from the axis driver and can lose track of some things, especially G52 origin shifts. OK, we know about that one - although novices have to be warned regularly.
Of the two programs above:
The first works fine, but I personally do NOT like the coding style. The 4th line, 'X3 Y0' is seriously obscure: you have to go several lines backwards to see what it refers to. Ditto the 5th line in 2nd example. In my world that is not good code, and today with PCs with Gigabytes of memory there is no need for this sort of thing. We are not running paper tape and 2400 baud serial lines any more. OK, that's my preference; ymmv.
I don't like the incremental style in the 2nd example as it can lead to all sorts of bungles. It takes a bit of thinking to figure out how it works. Now, to be sure, the machine can do that, but if you ever have to modify that sort of program it will take some time to get it right. I prefer my programming to be as clear as possible - for later maintenance. Again, ymmv.
And my 2nd and 3rd variations still don't work. There is a bug. Oh well.
Cheers