Сначала должны идти проверки (if), а потом пересчёт дат (JD = ).
Здесь пропущен знак умножения? *
Код:
if Month>2 then begin
Year:=Year;
Month:=Month;
end
else
if (Month=1) or (Month=2) then begin
Year:=Year-1;
Month:=Month+12;
end;
А здесь логику нужно сделать наоборот (инвертировать), чтоб не писать первую часть кода:
Код:
if (Month=1) or (Month=2) then begin
Year:=Year-1;
Month:=Month+12;
end;
Но этот кусок, должен быть перед пересчётом JDDay