Ok so going by the Z axis, you said it found the pulse between 3 and 50 pulses, so assuming the encoder is 1000 pulses per rev then 1/24 of 1000 would be 41.666 pulses. So even at the max 50 pulses you have seen it is very close to 1/24th of the total. With you setting 100 as the encoder pulses per rev then the IP-A is thinking it is well within the range.
So if you can move your limit switch trigger a slight amount you may get correct results.
You have 500 steps per mm in motor tuning and if the encoder is 1000 pulses per rev then that would mean each turn of the motor on Z will move 2mm I think. So if you move the switch approx 1mm further you should end up almost in the middle of the the count range.
Not sure why you are not getting the accuracy when using the Index but may be to do with the incorrect values or it could indeed be noise.
My encoder count is 24,000 pulses per rev and when homing I see maybe 5 or so max difference in the Index count, that would equate to 0.001mm variance, if my calcs are correct

Oh and regarding the G20/21 from your earlier post, I only ever use metric but seem to recall that way back when I was doing some testing I got funny issues going between the two. I seem to recall that it is ok if set in Imperial units and going metric but not vice versa. Could be wrong though as it was years ago I did this test.
What I have always said however, is if you predominantly use metric then set the machine up in metric units, if Imperial is your predominant mode then set the machine in Imperial units.
Hood