         case .ended:
             let velocity = pan.velocity(in: pan.view).y
             let targetOffset = currentOffset - diff + 0.2 * velocity
-            update(animated: true, to: targetOffset, velocity: velocity)
+            update(animated: true, to: targetOffset, velocity: velocity, keepCurrentState: false)
         default: break
         }
         

    var minOffset: CGFloat { return isScrollStretchable ? topPadding : max(topPadding, bounds.height - (header?.bounds.height ?? 0) - scroll.contentSize.height) }
    var maxOffset: CGFloat { return max(minOffset, bounds.height - minContentHeight) }
    var anchorOffset: CGFloat? { return anchorFraction.flatMap { bounds.height * (1 - $0) } }
    
    // MARK: - Scroll content size KVO
    

     Animatable.
     */
    public func set(state: State.Settle) {
        guard let newOffset = offset(forState: state) else { return }
        currentOffset = newOffset
    }
    
    /// Returns the current state of `SlideOutable` view.
    public var state: State {
        switch currentOffset {
        case minOffset:
            return .settled(.expanded)
