      */
     @objc open func startProgress(to value: ProgressValue, duration: ProgressDuration, completion: ProgressCompletion? = nil) {
         if isAnimating {
+            self.animationPauseTime = nil
             self.value = self.currentValue ?? self.value
-            self.layer.removeAnimation(forKey: "value")
-        }
-
+            self.ringLayer.removeAnimation(forKey: .value)
+        }
+
+        self.ringLayer.timeOffset = 0.0
+        self.ringLayer.beginTime = 0.0
+        self.ringLayer.speed = 1.0
         self.ringLayer.animated = duration > 0
         self.ringLayer.animationDuration = duration
-        self.ringLayer.speed = 1.0
-        self.ringLayer.timeOffset = 0.0
-        self.ringLayer.beginTime = 0.0
 
         CATransaction.begin()
         CATransaction.setCompletionBlock {

    @IBInspectable open var value: ProgressValue = 0 {
        didSet {
            if value < minValue {
                print("Warning in: UICircularProgressRing.value: Line #\(#line)")
                print("Attempted to set a value less than minValue, value has been set to minValue.\n")
                self.value = self.minValue
            }

     Luis Padron
     */
    @objc open var isAnimating: Bool {
        get {
            return (self.layer.animation(forKey: .value) != nil) ? true : false
        }
    }

    /**
