Портировать желательно начинать с побуквенного перевода
Консольная программа может выглядеть абсолютно также, как и паскалевская. Иначе потом вообще не разберешься.
Самым главным кандидатом я бы считал массив. Смещение индексов очень часто приводит к ошибкам. Надо бы это все проверить.
Real это скорее float, а не double, вроде. Но погрешность не должна быть большой.
Злоупотребление передачей параметров по ссылке тоже до добра не доводит. Программа на Паскале менее корявая, чем портированная.
Все глобальные переменные из паскалевской программы надо также сделать полями класса - это гораздо логичнее, чем передача ссылки. Это C#, а не COM.
Еще могут быть проблемы, если старый Паскаль эмулирует матсопроцессор. Он может не совсем по стандарту считать. Но это тоже будут погрешности. Если очень большая разница в результатах, то ошибка в алгоритме. А ее при таком запутанном коде проще не искать а переписать как в правильном коде.