I understand about the variables, I was just wondering how you got TCNT2 = 6;
Since this:
256 - (16000000 * 0.001 / 64) == 6
I presume the prescaler was 64.
BTW on this page here I set up Timer2 to generate an interrupt at exactly 1 mS intervals. It didn't take a lot of code, and since the timer itself counted to 1 mS you didn't have this overflow issue.