Yes, I had to change pxout and pyout to pfxout and pfyout to get it to drill right, but it has the same problem with the original post.
If I were in your position I'd play with it a little bit. You'll have to change the post in the pretract post block. Like 13engines said, I would try to swap G28 for G53 and see if that does anything for you.
Personally I wouldn't want to change the post too much knowing that it works with all of your other code well. You could add in some simple logic to basically say, "If it's coming out of a drill cycle, output G0 G90 ZXXX"
I don't have the post documentation right in front of me but in pretract you'd have something like:
if prv_gcode = (73, 74, 83, 84, 85, 86),
pbld, n$, sgabsinc, sgcode, *sg00, *sg90, "ZWHATEVERVALUE", e$
else,
pbld, n$, sgabsinc, sgcode, *sg28ref, "Z0.", e$
(The prv_gcode thing is just an example. It could be something like previous g code or previous op code, can't recall off the top of my head right now. Get with your reseller for the post documentation if you haven't already.)