class Fugit::Duration

def add_to_time(t)

def add_to_time(t)
  t = ::EtOrbi.make_time(t)
  INFLA_KEYS.each do |k, a|
    v = @h[k]; next unless v
    t = t + v * a[:s]
  end
  NON_INFLA_KEYS.each do |k, a|
    v = @h[k]; next unless v
    at = [ t.year, t.month, t.day, t.hour, t.min, t.sec ]
    at[a[:x]] += v
    if at[1] > 12
      n, m = at[1] / 12, at[1] % 12
      at[0], at[1] = at[0] + n, m
    elsif at[1] < 1
      n, m = -at[1] / 12, -at[1] % 12
      at[0], at[1] = at[0] - n, m
    end
    t = ::EtOrbi.make_time(at, t.zone)
  end
  t
end