code: def normalized(self):
          
          # Cascade remainders down (rounding each to roughly nearest
          # microsecond)
          days = int(self.days)
  
          hours_f = round(self.hours + 24 * (self.days - days), 11)
          hours = int(hours_f)
  
          minutes_f = round(self.minutes + 60 * (hours_f - hours), 10)
          minutes = int(minutes_f)
  
          seconds_f = round(self.seconds + 60 * (minutes_f - minutes), 8)
          seconds = int(seconds_f)
  
          microseconds = round(self.microseconds + 1e6 * (seconds_f - seconds))
  
          # Constructor carries overflow back up with call to _fix()
          return self.__class__(years=self.years, months=self.months,
                                days=days, hours=hours, minutes=minutes,
                                seconds=seconds, microseconds=microseconds,
                                leapdays=self.leapdays, year=self.year,
                                month=self.month, day=self.day,
                                weekday=self.weekday, hour=self.hour,
                                minute=self.minute, second=self.second,
                                microsecond=self.microsecond)
docs: Return a version of this object represented entirely using integer
          values for the relative attributes.
  
          >>> relativedelta(days=1.5, hours=2).normalized()
          relativedelta(days=1, hours=14)
  
          :return:
              Returns a :class:`dateutil.relativedelta.relativedelta` object.