@@ -60,7 +60,7 @@ def __new__(cls, days=0, seconds=0, microseconds=0,
6060 if total < 0 :
6161 m = - 1
6262
63- self ._microseconds = round (total % 1 * 1e6 )
63+ self ._microseconds = abs ( round (total % 1 * 1e6 )) * m
6464 self ._seconds = abs (int (total )) % SECONDS_PER_DAY * m
6565 self ._days = abs (int (total )) // SECONDS_PER_DAY * m
6666
@@ -292,16 +292,16 @@ class AbsoluteInterval(Interval):
292292
293293 def __new__ (cls , days = 0 , seconds = 0 , microseconds = 0 ,
294294 milliseconds = 0 , minutes = 0 , hours = 0 , weeks = 0 ):
295- self = super ( AbsoluteInterval , cls ) .__new__ (
295+ self = timedelta .__new__ (
296296 cls , days , seconds , microseconds ,
297297 milliseconds , minutes , hours , weeks
298298 )
299299
300300 # Intuitive normalization
301- total = self .total_seconds ()
301+ total = abs ( self .total_seconds () )
302302
303- self ._microseconds = abs ( round (total % 1 * 1e6 ) )
304- self ._seconds = abs ( int (total ) ) % SECONDS_PER_DAY
305- self ._days = abs ( int (total ) ) // SECONDS_PER_DAY
303+ self ._microseconds = round (total % 1 * 1e6 )
304+ self ._seconds = int (total ) % SECONDS_PER_DAY
305+ self ._days = int (total ) // SECONDS_PER_DAY
306306
307307 return self
0 commit comments