В общем программа по задумке решает транспортную задачу, поиск кратчайших путей и нахождение опорного плана проходят нормально, но сама оптимизация за методом потенциалов выпадает с ошибкой: Exception class EInvalidOp with message "Invalid floating pooint operation"

Говорю сразу, код оптимизации не полностью мой код, по этому тяжело разобраться в чем ошибка, может кто-то с опытом сможет подсказать?

Проблемный участок указанный дебаггером:

//составить новый план в соответствии с контуром
j:=1;
while j<>k+1 do begin
Ошибка->> matpost[Ceil(S[j,1]),Ceil(S[j,2])]:=S[j,3]-mmin;
matpost[Ceil(S[j+1,1]),Ceil(S[j+1,2])]:=S[j+1,3]+mmin;
j:=j+2;
end;

Если потребуется код всей процедуры, могу выложить