     if animator == snapAnimUIDynamicAnimator {
       println("Snapped")
       animator.removeAllBehaviors()
-      centerTick = nil
       isSnapping = false
-      self.expanded = false
+      if canceledSnapping {
+        canceledSnapping = false
+      } else {
+        closeLater()
+      }
     }
   }
   // MARK - Methods to be our own data source

    return animator
  }()
  
  /**
  Closes the control after a second
  */
  func closeLater() {
    if let lsi = lastSelectedIndex? {
      let date = dataSource!.dateAtIndex(lsi)
      delegate?.selectedDate?(date, index:lastSelectedIndex!, control:self)
    }

    if let stc = secondsToClose {
      dispatch_after(
        dispatch_time(
          DISPATCH_TIME_NOW,
          Int64(Double(stc) * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), {
          CATransaction.begin()
          CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
          self.expanded = false
          CATransaction.commit()
      })
    } else {
      self.expanded = false
    }
  }
  
  /**

  override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool {
    if isSnapping {
      println("Canceled snapping")
      canceledSnapping = true
      snapAnimUIDynamicAnimator.removeAllBehaviors()
      if closureToCloseControl != nil {
        cancel_delay(closureToCloseControl)
      }
      isSnapping = false
    }
    expanded = true
