                 }
                 else
                 {
-                    // multiple spanning stuff.
+                    // multiple spanning case. span >= 2.
+                    // 1) start from leftIndex and subtract fixed columns
+                    // 2) divide space evenly into content size columns.
+                    var contentCols:Vector.<ConstraintColumn> = new Vector.<ConstraintColumn>();
+                    
+                    availableWidth = maxExtent;
+                    
+                    for (j = leftIndex; j <= rightIndex; j++)
+                    {
+                        col = _constraintColumns[j];
+                        
+                        if (!isNaN(col.explicitWidth))
+                        {
+                            availableWidth -= col.width;
+                            
+                            if (availableWidth < 0)
+                            {
+                                availableWidth += col.width;
+                                break;
+                            }
+                        }
+                        else if (col.contentSize)
+                        {
+                            contentCols.push(col);
+                        }
+                    }
+                    
+                    var numContentCols:Number = contentCols.length;
+                    
+                    if (numContentCols > 0)
+                    {
+                        colWidth = availableWidth / numContentCols;
+                        
+                        for (j = 0; j < numContentCols; j++)
+                        {
+                            col = contentCols[j];
+                            col.setActualWidth(Math.ceil(Math.max(col.width, colWidth)));
+                        }
+                    }
                 }
             }
         }
-
+        
         // Position columns and add up widths.
         for (i = 0; i < numCols; i++)
         {

     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    public function ConstraintLayout()
    {

        var layoutTarget:GroupBase = target;
        if (!layoutTarget)
            return;

        var width:Number = 0;
        var height:Number = 0;
        var minWidth:Number = 0;
        var minHeight:Number = 0;
        
        parseConstraints();
        
        // TODO (klin): minimum will be different when percent size comes into play
        width = minWidth = measureAndPositionColumns();
        height = minHeight = measureAndPositionRows();
        
        if (otherElements)
        {
            var vec:Vector.<Number> = measureOtherContent();
            
            width = Math.max(width, vec[0]);
            height = Math.max(height, vec[1]);
            minWidth = Math.max(minWidth, vec[2]);
            minHeight = Math.max(minHeight, vec[3]);
        }

        layoutTarget.measuredWidth = Math.ceil(width);
        layoutTarget.measuredHeight = Math.ceil(height);
        layoutTarget.measuredMinWidth = Math.ceil(minWidth);
        layoutTarget.measuredMinHeight = Math.ceil(minHeight);
        
        // clear out cache
        colSpanElements = null;
