title: NSTimer missing fire date when clock is manually set forward
body: <p>I am setting up a timer to run a specific function in the future like this:</p>
  
  <pre><code>pingTimer = [[NSTimer alloc] initWithFireDate:pingAtDate
                                       interval:0
                                         target:self
                                       selector:@selector(ping:)
                                       userInfo:nil
                                        repeats:NO];
  
  [[NSRunLoop currentRunLoop] addTimer:pingTimer forMode:NSDefaultRunLoopMode];
  </code></pre>
  
  <p>The date is approximately 1 week in the future, so for testing purposes I (and others) have been setting the system clock forward 8 days to ensure that the specified event happens.  The problem is that it doesn't happen.</p>
  
  <p>When scheduling a few minutes in the future I have observed that the timer still does go off, but it appears to go off after a specific number of minutes.  Say I schedule the timer for a date 5 minutes in the future, then I set the clock forward 1 hour, the timer does actually fire 5 minutes later, but since I set the clock forward 1 hour the time that it fires at no longer aligns with the time that it was scheduled to fire at.</p>
  
  <p>This is not what I would expect to happen, as I am calling "initWithFireDate".  </p>
  
  <p>Although all of this seems wrong to me (and may be an interesting observation to others) the question is how do I ensure that the timer fires as soon as it notices that it's fire date is in the past (i.e. How do I ensure that my timer will fire when somebody moves the clock past the scheduled firing date).</p>