Hmmmmm, One idea might be to set homing to "home in place", move to position then reference.
I'm torn on this one. Really the only thing that should ever adjust Machine position is referencing the machine. Can't imagine a scenario that anything else would be acceptable....... but trying to. Since machine position is just that, physical position of axis in relation to machine (at one end, in the middle, one end plus or minus some distance (home off distance)). I can't imagine why it would need to be dynamically altered, that is what fixture offsets, etc. are for. Machine position is what all other offsets work off of. If it isn't consistent nothing else will be either.