Contributor: SWAG SUPPORT TEAM        

{
I have seen a number of Julian Date Functions showing up here lately.
None of them seem to agree With each other.  of course, if your Program
is the only thing using them, then it will remain consistent and work
fine. But if you need to find the JD For astronomical or scientific
purposes, then you will need to be able to agree With the accepted
method.  The following seems to work well For me.  Using Real For the
Var Types allows you to find the JD to great accuracy.
BTW, JD 0.0 is Greenwich Mean Noon, Jan. 1, 4713 BC (which is why if you
enter a "whole" day. ie. 1,2,3... your answer will have a '.5' at the
end.
}

Function JulianDate(Day, Month, Year : Real) : Real;
Var
  A, B, C, D : Real;
begin
  if Month <= 2 then
  begin
    Year  := Year - 1;
    Month := Month + 12;
  end;

  if Year >= 1582 then
  begin
    A := inT(Year / 100);
    B := inT((2 - A) + inT(A / 4));
  end
  else
    B := 0;

  if Year < 0 then
    C := inT((365.25 * Year) - 0.75)
  else
    C := inT(365.25 * Year);

  D := inT (30.6001 * (Month + 1));
  JulianDate :=  B + C + D + Day + 1720994.5;
end;