def add_days(number)
      if number < 0
        return sub_days(number.abs)
      end
      o = dup  # new ZDate object
      # Let's see what month we are going to end in
      while number > 0
        if o.days_left_in_month >= number
          o.date = ZDate.format_date(o.year_str, o.month_str, o.day + number)
          number = 0
        else
          number = number - 1 - o.days_left_in_month  # it costs 1 day to increment the month
          o.increment_month!
        end
      end
      o
    end
def add_days(number)
      if number < 0
        return sub_days(number.abs)
      end
      o = dup  # new ZDate object
      # Let's see what month we are going to end in
      while number > 0
        if o.days_left_in_month >= number
          o.date = ZDate.format_date(o.year_str, o.month_str, o.day + number)
          number = 0
        else
          number = number - 1 - o.days_left_in_month  # it costs 1 day to increment the month
          o.increment_month!
        end
      end
      o
    end
add_ methods return new ZDate object, they DO NOT modify self