# File AlmanacForRuby/AlmanacAngleSunAndMoon.rb, line 170
  def get_saku_immediately_before_target_day(target_day)

    # 対象日~(対象日 - 30)日のいずれかの日が朔日
    # ※ 月齢は0~29
    # その日の始まり(0時0分0秒)の"月の黄経 - 太陽の黄経"の値と
    # その日の終わり(23時59分59秒)の"月の黄経 - 太陽の黄経"の値を
    # 比べて、値の+-がひっくり返っている日が、朔を含んでいる日
    saku_date_time = target_day
    day_of_first \
      = AlmanacDateTime.new(target_day.year,
                            target_day.month,
                            target_day.day,
                            0,
                            0,
                            0,
                            target_day.offset)
    day_of_end \
      = AlmanacDateTime.new(target_day.year,
                            target_day.month,
                            target_day.day,
                            23,
                            59,
                            59,
                            target_day.offset)
    temporary_day = 0
    i = 0
    while i < 30
      subtract_first_elos_from_first_elom \
        = ajd_to_elom(day_of_first.ajd) - ajd_to_elos(day_of_first.ajd)
      subtract_end_elos_from_first_elom \
        = ajd_to_elom(day_of_end.ajd) - ajd_to_elos(day_of_end.ajd)

      if subtract_first_elos_from_first_elom >= 0 && \
         subtract_first_elos_from_first_elom < CONSTANT_OF_PERIODIC_LUNAR_AGE && \
         subtract_end_elos_from_first_elom < 0 && \
         subtract_end_elos_from_first_elom >= -CONSTANT_OF_PERIODIC_LUNAR_AGE
        temporary_day = i
        break
      end
      if subtract_first_elos_from_first_elom < 0 && \
         subtract_first_elos_from_first_elom >= -CONSTANT_OF_PERIODIC_LUNAR_AGE && \
         subtract_end_elos_from_first_elom >= 0 && \
         subtract_end_elos_from_first_elom < CONSTANT_OF_PERIODIC_LUNAR_AGE
        temporary_day = i
        break
      end

      i += 1
      day_of_first -= 1
      day_of_end -= 1
    end
    saku_date_time -= i

    return saku_date_time
  end