title: Python timedelta issue with negative values
body: <p>Hi I need some help to understand why this is happening.
  I have a method to track 'time remaining' in an event program:</p>
  <pre><code>def get_program_time_budget(self):
      return self.estimated_duration-self.get_program_duration() 
  </code></pre>
  <p>All fine when the <code>estimated_duration &gt; self.get_program_duration()</code> but when this goes the other way things get funny.</p>
  <p>Results are displayed to the user:</p>
  <pre><code>Estimated   11 hours    Allocated       10 hours 55 minutes     Remaining       5 minutes
  </code></pre>
  <p>When the result goes negative it does this:</p>
  <pre><code>Estimated   11 hours    Allocated       11 hours 5 minutes  Remaining       -1 day 23 hours 55 minutes
  </code></pre>
  <p>Any ideas how to get the result -5 minutes?</p>
  <p>Here is the <code>timedelta</code> formatter (Note this is a Django filter, so receives the <code>timedelta</code> value as a <code>str</code> - but it is stored as a <code>timedelta</code>):</p>
  <pre><code>def format_duration(value):
    try:
      delim = ':'
      toks = value.split(',')
      hour = minute = ''
      d_string = value.count('day') and toks[0] or ''
      h, m, s = d_string and toks[-1].strip().split(delim) or value.split(delim)
      try:
          hour = int(h)
      except:
          pass
      try:
          minute = int(m)
      except:
          pass  
      h_string = &quot;%s%s%s&quot; % (hour and hour or '', (hour and ' hour' or ''),(hour and hour &gt; 1 and 's' or '')  )
      m_string = &quot;%s%s%s&quot; % (minute and minute or '', (minute and ' minute' or ''),(minute and minute &gt; 1 and 's' or ''))
      return &quot;%s %s %s&quot; % (d_string, h_string, m_string)
    except Exception, e:
      logging.error(&quot;Error in format_duration -&gt; %s. Duration value=%s&quot; % (e, value))
      return ''v 
  </code></pre>