Yes, with Haas setting 108 "quick rotary G28 on", try this for your end lines:
G00 G91 G28 Z0 A0
G92 A0
You may wonder what the heck the G92 A0 does
Well, I was running a job where I was using G92 A commands regularly to prevent a whole lot of winding and unwinding in the middle of a 15 turns (of A) program. Worked like a treat.
But, at the end of the program, the G28 command as given in the above example, would return the A axis to zero positionally, but there was still a problem.
It seemed that any remainder value (mod 360, if I understand the use of that term) would be left in the G92 register, and would affect the next run of my program.
So by using the G92 A0 command, this cancelled out the nuisance value I was seeing in the G92 register.
So to my way of thinking, the Haas quick rotary G28 is a trick performed with G92, but perhaps in some older versions of the software, they forgot to deal with the fraction of a turn that remained when all the whole turns were removed from the current A position.
You can experiment with and without the G92 command, but check the G92 register after your machine reads the M30 and make sure that there is no value in there except zero.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)