Sometimes we use exception codes of 0 - that will not indicate an error through retcode.  (We should probably go through and check they're all non 0)

Also retcode is generally limited to 255 so may need to ensure it is non-0 once it is masked.

Maybe it should call setErrorCode(retcode)?