millis() off by 20%?

Which is exactly why the Arduino folks used a real crystal in the "USB" processor and not a ceramic resonator. Your honor, I rest my case.

Your honor the witness doesn't know what he is talking about. Even if the 8u2 clock was 100% accurate the serial communications between the 328p and the arduino IDE couldn't possibly work if the 328p clock was 20% off as it is what determines what speed the serial data is clocked into or out of the hardware usart in the 328p. The hardware serial library calculates the baudrate divider hardware in the 328p assuming a 16mhz clock, as does the bootloader code to allow uploading of a sketch. An arduino with a processor clock error of 20% just wouldn't function with the IDE.

Are you sure you wish to rest your case before the jury?

Lefty