Лучше бы не использовать цикл for не по назначению, изменение параметра i в теле цикла - антипаттерн вообще-то. Такие циклы, как у вас, надо писать вот так:
int i = 1;
while (i < where)
i = checkmanyroads(i);
PS про Паскаль вы зря сказали. Если в C-подобных языках изменение счетчика цикла в его теле допустимо, хотя и некрасиво выглядит, то в Паскале это - неопределенное поведение. Если вы когда-то писали на Паскале таким образом, то проверьте свои программы на Turbo Pascal, Free Pascal и на Delphi. Я думаю, вы будете сильно удивлены.
PPS также имеет в цикл временно поставить отладочный вывод (или научиться пользоваться отладчиком). Было бы глупо неделю пытаться правильно написать цикл из двух строчек, если ошибка в checkmanyroads.