static void backwardsPass ( Fraction[][] matrix, coordinate[] lastLeading){
      // Begin at the last pivot entry
      int i = leadCount-1;
      while ( i > 0 ){
         // Don't do this for Row 1, as there is nothing above row 1.
         if ( lastLeading[i].x > 1 ){
            for ( int k = lastLeading[i].x-1; k > 0; k-- ){
               if ( matrix[k][lastLeading[i].y].getNumerator() != 0 ){
                  // Zero all entries above pivot columns with scalar eliminaton
                  Fraction scalar = new Fraction();
                  scalar = matrix[k][lastLeading[i].y].multiply( negativeOne );
                  eliminateRow( matrix, lastLeading[i].x, k, scalar );
                  if ( printStepsFlag ) {
                     out.printf( "%d. ", steps ); steps++;
                     out.printf( "R%d = ",k );
                     scalar.output();
                     out.printf ( " * R%d + R%d\n", lastLeading[i].x,k );
                     printMatrix( matrix );
                   }
               }
            }
         }
         i--;
      }
      return;
   }