             y: _decelerationVelocity.y * timeInterval
         );
         
-        performPanChange(translation: distance);
+        if (!performPanChange(translation: distance))
+        {
+            // We reached the edge, stop
+            _decelerationVelocity.x = 0.0;
+            _decelerationVelocity.y = 0.0;
+        }
         
         _decelerationLastTime = currentTime;
         

    public var highlightPerDragEnabled = true
    
    /// If set to true, highlighting per dragging over a fully zoomed out chart is enabled
    /// :default: true
    public var isHighlightPerDragEnabled: Bool
    {

                
                _isDragging = false;
            }
            
            if (_outerScrollView !== nil)
            {
                _outerScrollView?.scrollEnabled = true;
                _outerScrollView = nil;
            }
        }
    }
    
    private func performPanChange(var #translation: CGPoint) -> Bool
    {
        if (isAnyAxisInverted && _closestDataSetToTouch !== nil
            && getAxis(_closestDataSetToTouch.axisDependency).isInverted)
