             return
         }
         
-        let current = (self.value - self.oldValue) * CGFloat(dt) + self.oldValue
+        let current = (value - oldValue) * CGFloat(dt) + oldValue
         
         valueLabel.update(withValue: current, valueIndicator: valueIndicator,
                           showsDecimal: showFloatingPoint, decimalPlaces: decimalPlaces)

        }
    }
    
    // MARK: Outer Ring properties
    
    @IBInspectable public var outerRingWidth: CGFloat = 10.0 {

        animation.fillMode = kCAFillModeForwards
        shapeLayer.add(animation, forKey: "animateInnerRing")
        
        if shouldShowValueText {
            valueLabel.text = "\(oldValue)"
            link = CADisplayLink(target: self, selector: #selector(self.animateLabel))
            link.add(to: RunLoop.current, forMode: .commonModes)
        }
    }
    
    
    @objc private func animateLabel() {
        let dt = (link.timestamp - startTime) / animationDuration
        
        if (dt >= 1.0) {
            valueLabel.update(withValue: value, valueIndicator: valueIndicator,
