Юзай в репите одну процедуру, далее в цыкле вызывется другая процедура, после ее окончания снова в цикле срабатует автоматом первая процедура, и ненадо ее вызывать везде... немного фантазии
типа такого
Procedure puskrepeat;
Var i:integer;
Begin
exitpusk:=false;
Repeat
i:=puskmain(i);
until exitpusk;
end;