         zeroOffsets(orig, aug);
 
         // now run backwards and up from row/column 3
-        for (row = 3 * WIDTH, col = 3; row >= 0; row -= WIDTH, col--)
+        for (row = 15, col = 3; row >= 0; row -= 5, col--)
         {
             if (row > 0)
             {

        // [ 15 16 17 18 19 ] [ 0 0 0 1 0 ]
        // [  0  0  0  0  1 ] [ 0 0 0 0 1 ]

        for (row = 0, col = 0; row < MAX; row += WIDTH, col++)
        {
            if (orig[row + col] == 0 &&
                !moveNonZeroToDiagonal(orig, aug, row, col))


    private static function zeroRows(orig:Array, aug:Array, refRow:int, col:int, up:Boolean):void
    {
        var rowStep:int = up ? -5 : 5;
        var pivot:Number = orig[refRow + col];
        var eliminate:Number;

        for (var row:int = refRow + rowStep; row >= 0 && row < 20; row += rowStep)
        {
            eliminate = orig[row + col];
            if (eliminate != 0)
