Тут именно баг компилятора, вот такой код он генерирует для цикла:
Код:
0040F8D0 FF400C inc dword ptr [eax+$0c]
Test.dpr.32: for i := FromV to ToV do
0040F8D3 8B45E0 mov eax,[ebp-$20]
0040F8D6 8B400C mov eax,[eax+$0c]
0040F8D9 663B45E6 cmp ax,[ebp-$1a]
0040F8DD 7ED7 jle $0040f8b6 {переход на тело}
и тут действительно счётчик 16 битный. Готовлю отчет в QualityCentral.