I would tend to believe the problem is with the power supply.

Or more specificaly, the measurement of the power supply's voltage.

A simple test is to use a voltage that you don't need to "read" to know what it is. And the easiest way to do that is with a simple voltage divider.

With 2 resistors 100k to Vdd(+5V) and 220 ohms to Vss. you will get approximately 11mv at the junction. Of course it depends on the tolerance of the resistors you use, but it will still be very close even with 5%.

With 12 bits and 2.5Vref, that should give an A/D value of 22, and due to integer truncating should read 10 mv after the *6/10.

So if it reads 10mv, then the problem is the difference between the actual power supply voltage and the external measuement of that voltage.
<br>