помогите найти ошибку
program lesson2;
var
i,n : integer;
S : real;
function fact(x:integer):longint;
begin
writeln('Enter n>0 ');
readln(n);
if n <= 1 then fact := 1 else fact := n * fact(n - 1);
S := 0;
i := 1;
repeat
S := 1+(sqr(n))/(n*fact(n-1));
i := i+1;
until i > n;
S := -S;
writeln('sum = ',S:10:7);
end.
в коде мной допущена ошибка, которую я не могу выявить. суть задания: составить частичную сумму ряда.