       delta = 0 if delta < 0
 
 
-    delta = @_normalizeAngle delta
-    @_lastOp.angle = delta
+    @_lastOp.angle = delta = @_normalizeAngle delta
     @_lastOp.fn.call @, delta, @_lastOp.anchor, @_lastOp.options
-    @_settings.touchMoveCallback delta
+    @_settings.touchMoveCallback delta, e
 
 
 
   # Teardown process when touch/drag event ends.
-  _onTouchEnd: =>
+  _onTouchEnd: (e) =>
     return unless @_touchEnabled
     # Restore the initial touch status and cursor.
     @_touchStarted = @_inTrans = false

    # Enable tweening again.
    @_setTrans @_settings.speed, @_settings.ripple
    # Pass callback final value.
    @_settings.touchEndCallback @["_#{ @_touchAxis }Last"]


  # End folding when the mouse or finger leaves the composition.
  _onTouchLeave: =>
    return unless @_touchEnabled and @_touchStarted
    @_onTouchEnd()


  # A fallback for browsers that don't support `mouseleave`.
  _onMouseOut: (e) =>
    return unless @_touchEnabled and @_touchStarted
    @_onTouchEnd() if e.toElement and !@el.contains e.toElement


  _unfold: (callback) ->

      @[axis1] = e.targetTouches[0]["page#{ @_touchAxis.toUpperCase() }"]

    # Return that value to an external listener.
    @_settings.touchStartCallback @[axis1], e


  # Called on touch/mouse movement.
