     {
         if ((_length == 0) || (distance < 0))
             return -1;
-            
-        var curDistance:Number = 0;
+
+        // The area of the first item includes the majorAxisOffset            
+        var curDistance:Number = majorAxisOffset;
+        if (distance < curDistance)
+            return 0;
+        
         var index:int = -1;
         var block:Block = null;
         var blockGap:Number = _gap * BLOCK_SIZE;

    public function start(index:uint):Number
    {
        if ((_length == 0) || (index == 0))
            return 0;
            
        if (index >= _length)
            throw new Error(resourceManager.getString("layout", "invalidIndex"));            

        var distance:Number = 0;
        var blockIndex:uint = index >> BLOCK_SHIFT;
        for (var i:int = 0; i < blockIndex; i++)
        {

    
    /**
     *  The cumulative distance to the start of the item at index, including
     *  the gaps between items and the majorAxisOffset. 
     * 
     *  The value of start(0) is majorAxisOffset.  
     * 
     *  Equivalent to:
     *  <pre>
     *  var distance:Number = majorAxisOffset;
     *  for (var i:int = 0; i &lt; index; i++)
     *      distance += get(i);
     *  return distance + (gap * index);
