Поняла, в чём проблема. Если цикл идёт от 1 до 3, то на выходе из него переменная будет равна 4. Никогда раньше не использовала переменную из цикла после выхода из него, так что не задумывалась об этом. Судя по документации, в конце итерации значение переменной плюсуется, после чего проверяется: если переменная меньше или равна конечному значению, то выполняется следующая итерация, иначе – выход. Тоесть, условием выхода является превышение конечного значения, а, если конечное значение – самое большое для данного типа переменной, то происходит переполнение. Ну и самое большое значение Long – 0x7FFFFFFF, а самое маленькое – 0x80000000, так что понятно, почему у меня переменная как бы перескакивала к началу цикла.