class Rufus::Scheduler::RepeatJob

def first_at=(first)

def first_at=(first)
  return (@first_at = nil) if first == nil
  n0 = EoTime.now
  n1 = n0 + 0.003
  first = n0 if FIRSTS.include?(first)
  fdur = Rufus::Scheduler.parse_duration(first, no_error: true)
  @first_at = (fdur && (EoTime.now + fdur)) || EoTime.make(first)
  @first_at = n1 if @first_at >= n0 && @first_at < n1
  fail ArgumentError.new(
    "cannot set first[_at|_in] in the past: " +
    "#{first.inspect} -> #{@first_at.inspect}"
  ) if @first_at < n0
  @first_at
end