1) Есть сомнения в правильности работы второй функции.
2) В большинстве случаев цикл бесконечный, т.к. i внутри него не меняется
repeat;
b:=computation(i);
until i=b;