 public class RiseTransitSetTimes {
     private lazy var riseTransiteSetTimesDetails: RiseTransitSetTimesDetails = {
         [unowned self] in
-        let jd = self.celestialBody.julianDay
+        // AA+ p.102 indicates one need to get day D at 0h Dynamical Time, thus, midnight UT.
+        let jd = self.celestialBody.julianDay.midnight
         let hp = self.celestialBody.highPrecision
         
         let celestialBodyType = type(of: self.celestialBody)

                                                geoCoords.latitude.value,
                                                apparentRiseSetAltitude.value)
    
    let rise = julianDay + Hour(details.Rise).inJulianDays
    let transit = julianDay + Hour(details.Transit).inJulianDays
    let set = julianDay + Hour(details.Set).inJulianDays
    
    return RiseTransitSetTimesDetails(isRiseValid: details.isRiseValid.boolValue,
                                      riseTime: rise,

/// Actually, for the moon h0 is not constant. See p.102 of AA.
///
/// - Parameters:
///   - julianDay: the date at which one want to compute the times. MUST BE SET AT 0h UT for the given DAY.
///   - equCoords1: the equatorial coordinates of the body at Date - 1 Day.
///   - equCoords2: the equatorial coordinates of the body at Date.
///   - equCoords3: the equatorial coordinates of the body at Date + 1 Day.
