             delegate.pausableTimer(self, percentComplete: percent)
         }
         
-        DispatchQueue.global(qos: .utility).asyncAfter(deadline: dispatchTime) {
+        DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + Double(delegateRefreshRate)) {
             self.update()
         }
     }
     
     /// Terminates the execution of the timer and notifies delegates.
-    fileprivate func expire() {
+    private func expire() {
         referenceDate = nil
         if let delegate = self.delegate {
             delegate.pausableTimer(self, percentComplete: maxPercentComplete)

        return min(percent, maxPercentComplete)
    }
    
    fileprivate var dispatchTime: DispatchTime {
        return DispatchTime.now() + Double(Int64(delegateRefreshRate * Float(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
    }
    
    /// Resets the timer to the initial state and begins counting.
    public func reset() {
        completedIntervals = 0

    }
    
    /// Calculates the number of completed intervals and notifies the delegate.
    private func update() {
        guard let referenceDate = self.referenceDate else {
            return
        }
