For the sun computation, I'm using the built-in (as of PHP 5.1.2) date_sun_info() function with accepts time,lat,long as arguments. No other adjustments were made.
I'm still munging about with the code so it produces the same output data that the current USNO version uses.. be a bit longer.
As an aside, I think I see where the USNO DNS setup is it's own problem. The authoritative DNS for usno.navy.mil is
Dig usno.navy.mil@208.67.222.222 ...
Non-authoritative answer
Recursive queries supported by this server
Query for usno.navy.mil type=255 class=1
usno.navy.mil SOA (Zone of Authority)
Primary NS: psyche.usno.navy.mil
Responsible person: hostmaster@usno.navy.mil
serial:4037605289
refresh:3600s (60 minutes)
retry:1800s (30 minutes)
expire:2147483647s (248550 days)
minimum-ttl:3600s (60 minutes)
Dig psyche.usno.navy.mil@192.5.41.214 ...
Authoritative Answer
Recursive queries supported by this server
Query for psyche.usno.navy.mil type=255 class=1
psyche.usno.navy.mil A (Address) 192.5.41.214
so if that one server (psyche) has a DNS issue, the entire usno.navy.mil domain goes down. Common best-practice for DNS uses two DNS servers, each on different subnets and not in the namespace of the zone they host. Achilles heel with one server... sigh.
Also, when that DNS is down, then you can't send mail to hostmaster at usno.navy.mil -- since the MX records also cannot be found, that's why I sent the messages about the outage to hostmaster at navy.mil for followup.