     }
     
     public func setSelectedIndex(selectedIndex: Int, animated: Bool) {
+        
+        // Reset switch on half pan gestures
+        var catchHalfSwitch:Bool = false
+        if self.selectedIndex == selectedIndex {
+            catchHalfSwitch = true
+        }
+        
         self.selectedIndex = selectedIndex
         if animated {
             UIView.animateWithDuration(animationDuration, delay: 0.0, usingSpringWithDamping: animationSpringDamping, initialSpringVelocity: animationInitialSpringVelocity, options: [UIViewAnimationOptions.BeginFromCurrentState, UIViewAnimationOptions.CurveEaseOut], animations: { () -> Void in
                 self.layoutSubviews()
                 }, completion: { (finished) -> Void in
                     if finished {
-                        self.sendActionsForControlEvents(.ValueChanged)
+                        if (!catchHalfSwitch) {
+                            self.sendActionsForControlEvents(.ValueChanged)
+                        }
                     }
             })
         } else {

// MARK: DGRunkeeperSwitch

public class DGRunkeeperSwitch: UIControl {

    // MARK: -
    // MARK: Public vars
    

        
        finishInit()
    }
    
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
