Had a chance to do some testing. I generally end my programs with :
G0 G53 Z0 M5
G49
G0 G53 X-14. Y-6.
M30
If i take out the G49, it will run the program just fine. With the G49 in there, it rapids to Z0, reads the G49 line, then moves to Z.01 and trips the soft limits and estops. The buffer is around 100% on the UC400eth i/o screen when this occurs. If i put a little dwell after the G49 line (300ms), then it will run the program just fine.