             (scrollR.containsRect(elementR) || (!elementLocalBounds && elementR.containsRect(scrollR))))
             return null;
         
-        var dxl:Number = elementR.left - scrollR.left;     // left justify element
-        var dxr:Number = elementR.right - scrollR.right;   // right justify element
-        var dyt:Number = elementR.top - scrollR.top;       // top justify element
-        var dyb:Number = elementR.bottom - scrollR.bottom; // bottom justify element
-        
-        // minimize the scroll
-        var dx:Number = (Math.abs(dxl) < Math.abs(dxr)) ? dxl : dxr;
-        var dy:Number = (Math.abs(dyt) < Math.abs(dyb)) ? dyt : dyb;
-        
-        if (!isNaN(topOffset))
-            dy = dyt + topOffset;
-        else if (!isNaN(bottomOffset))
-            dy = dyb - bottomOffset;
-        
-        if (!isNaN(leftOffset))
-            dx = dxl + leftOffset;
-        else if (!isNaN(rightOffset))
-            dx = dxr - rightOffset;
-        
-        // scrollR "contains"  elementR in just one dimension
-        if ((elementR.left >= scrollR.left) && (elementR.right <= scrollR.right))
-            dx = 0;
-        else if ((elementR.bottom <= scrollR.bottom) && (elementR.top >= scrollR.top))
-            dy = 0;
-        
-        // elementR "contains" scrollR in just one dimension
-        if ((elementR.left <= scrollR.left) && (elementR.right >= scrollR.right))
-            dx = 0;
-        else if ((elementR.bottom >= scrollR.bottom) && (elementR.top <= scrollR.top))
-            dy = 0;
-    
+        var dx:Number = 0;
+        var dy:Number = 0;
+        
+        if (entireElementVisible)
+        {
+            var dxl:Number = elementR.left - scrollR.left;     // left justify element
+            var dxr:Number = elementR.right - scrollR.right;   // right justify element
+            var dyt:Number = elementR.top - scrollR.top;       // top justify element
+            var dyb:Number = elementR.bottom - scrollR.bottom; // bottom justify element
+            
+            // minimize the scroll
+            dx = (Math.abs(dxl) < Math.abs(dxr)) ? dxl : dxr;
+            dy = (Math.abs(dyt) < Math.abs(dyb)) ? dyt : dyb;
+            
+            if (!isNaN(topOffset))
+                dy = dyt + topOffset;
+            else if (!isNaN(bottomOffset))
+                dy = dyb - bottomOffset;
+            
+            if (!isNaN(leftOffset))
+                dx = dxl + leftOffset;
+            else if (!isNaN(rightOffset))
+                dx = dxr - rightOffset;
+            
+            // scrollR "contains"  elementR in just one dimension
+            if ((elementR.left >= scrollR.left) && (elementR.right <= scrollR.right))
+                dx = 0;
+            else if ((elementR.bottom <= scrollR.bottom) && (elementR.top >= scrollR.top))
+                dy = 0;
+            
+            // elementR "contains" scrollR in just one dimension
+            if ((elementR.left <= scrollR.left) && (elementR.right >= scrollR.right))
+                dx = 0;
+            else if ((elementR.bottom >= scrollR.bottom) && (elementR.top <= scrollR.top))
+                dy = 0;
+        }
+        
         if (elementLocalBounds)
         {
             // Only adjust for local bounds if the element is wider than the scroll width
-            if (elementR.width > scrollR.width)
+            if (elementR.width > scrollR.width || !entireElementVisible)
             {
                 if (elementLocalBounds.left < scrollR.left)
                     dx = elementLocalBounds.left - scrollR.left;

    protected function getScrollPositionDeltaToElementHelperHelper(
                                    elementR:Rectangle,
                                    elementLocalBounds:Rectangle,
                                    topOffset:Number = NaN, 
                                    bottomOffset:Number = NaN, 
                                    leftOffset:Number = NaN,

        if (elementLocalBounds)
            elementLocalBounds = convertLocalToTarget(element, elementLocalBounds);
        return getScrollPositionDeltaToElementHelperHelper(
            elementR, elementLocalBounds, entireElementVisible,
            topOffset, bottomOffset, 
            leftOffset, rightOffset);
        
