     
     func scrollReverseAnimated(animated: Bool, completion: ((transitionSuccessful: Bool) -> Void)?) {
         if (self.leftViewController != nil) {
-            self.didFinishScrollingCompletionHandler?(transitionSuccessful: false)
-            self.didFinishScrollingCompletionHandler = nil
+
+            // Cancel current animation and move
+            if self.scrolling {
+                self.scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: false)
+            }
             
             self.didFinishScrollingCompletionHandler = completion
             self.scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: animated)

    
    func scrollForwardAnimated(animated: Bool, completion: ((transitionSuccessful: Bool) -> Void)?) {
        if (self.rightViewController != nil) {
            self.didFinishScrollingCompletionHandler?(transitionSuccessful: false)
            self.didFinishScrollingCompletionHandler = nil
            
            self.didFinishScrollingCompletionHandler = completion
            self.scrollView.setContentOffset(CGPoint(x: self.view.bounds.width * 2, y: 0), animated: animated)

    private(set) var selectedViewController: UIViewController?
    private var rightViewController: UIViewController?
    
    private(set) var scrolling = false
    private(set) var navigationDirection: EMPageViewControllerNavigationDirection?
    
    private var adjustingContentOffset = false // Flag used to prevent isScrolling delegate when shifting scrollView
    private var reloadAdjoiningViewControllersOnFinish = false
    private var didFinishScrollingCompletionHandler: ((transitionSuccessful: Bool) -> Void)?

