public synchronized void decrement(int weight){
  if (weight == 0)   return;
  minimum+=weight;
  int logfloor=(int)(Math.floor(Math.log(weight) / Math.log(2)));
  if (logfloor < votingRecord.size() - 1) {
    while (logfloor > 0) {
      selectedDecrement(logfloor);
      weight=weight - (int)Math.pow(2,logfloor);
      logfloor=(int)(Math.floor(Math.log(weight) / Math.log(2)));
    }
  }
  for (int x=0; x < weight; x++) {
    decrement();
  }
}

public synchronized void decrement ( int weight ) { if ( weight == 0 ) return ; minimum += weight ; int logfloor = ( int ) ( Math . floor ( Math . log ( weight ) / Math . log ( 2 ) ) ) ; if ( logfloor < votingRecord . size ( ) - 1 ) { while ( logfloor > 0 ) { selectedDecrement ( logfloor ) ; weight = weight - ( int ) Math . pow ( 2 , logfloor ) ; logfloor = ( int ) ( Math . floor ( Math . log ( weight ) / Math . log ( 2 ) ) ) ; } } for ( int x = 0 ; x < weight ; x ++ ) { decrement ( ) ; } }
decrement every dimension by the number passed as a parameter . again at least one count in each dimension i . e : no underflow check currently - will wreak havoc with zero counts
