Uint oddness

Anyone explain why this causes a timeout error:

for (var i:uint = 4; i >= 0; i–) {
}

If I replace uint with int, or Number, it is fine.

It is the >= 0 that causes the issue. If I just do i > 0 it works fine.

If I do:

var i:uint = 0;
trace(i);

I get 0…

But it won’t work in a for loop. Odd.