             checkedValue = newValue
         }
 
-        if value != checkedValue {
+        if value == checkedValue {
+            feedback(positive: false)
+        } else {
             value = checkedValue
             delegate?.barcelonetaDidChangeValue(self, value: value)
-        }
-    }
-
+            feedback(positive: true)
+        }
+    }
     ///Restore the view to the original position with animation
-    internal func animateViewBackToOrigin() {
+    private func animateViewBackToOrigin() {
         moveConstraint.constant = originalConstant
         self.delegate?.barcelonetaDidRelease(self)
         UIView.animate(withDuration: 0.3,

    }
    ///Checks what to do with the new value, depending if loops or not
    /// - Parameter newValue: The value to check and apply
    internal func checkAndApply(_ newValue: Double) {
        var checkedValue = value
        if newValue > maximumValue {
            checkedValue = loops ? minimumValue : maximumValue

            self.superview!.layoutIfNeeded()
        })
    }
    ///Haptick feedback, if supported. Min iOS 10.0.
    /// - Parameter positive: The value was changed.  If false, an impact feedback is launched
    private func feedback(positive: Bool) {
        if #available(iOS 10.0, *) {
            if positive {
                let selectionFeedback = UISelectionFeedbackGenerator()
                selectionFeedback.selectionChanged()
            } else {
                let feedback = UIImpactFeedbackGenerator(style: .medium)
                feedback.impactOccurred()
            }
        }
    }
}
