     public function start(index:uint):Number
     {
         if ((_length == 0) || (index == 0))
-            return 0;
+            return majorAxisOffset;
             
         if (index >= _length)
             throw new Error(resourceManager.getString("layout", "invalidIndex"));            
 
-        var distance:Number = 0;
+        var distance:Number = majorAxisOffset;
         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. 
     * 
     *  The value of start(0) is 0.  
     * 
     *  Equivalent to:
     *  <pre>
     *  var distance:Number = 0;
     *  for (var i:int = 0; i &lt; index; i++)
     *      distance += get(i);
     *  return distance + (gap * index);

    {
        if ((_length == 0) || (distance < 0))
            return -1;

        // 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;
