and yes the mode C on the ATM does show height AMSL
No it doesn't, it can be quite a bit in error and still be within tolerance that's acceptable to ATC. I was crossing Donny zone the other day and my Tranny was indicating 4,000 when I was at 3,000 It gradually sorted itself out to 3,300; the controller and I were speaking about it and he said that it was within tolerance at 3,300.
I have no idea what the tolerances are but obviously 10% at least.
Mode C is like a stopped clock, right about twice a day...
Even an encoding alt depends on having the right QFE set. Errors (I've done it myself) come when you're given ones and noughts, IE 'QNH 1011' can be easily misread as 1001, you may even read back 1011. That's 280' of error for a start.