public void redistributeVotes(int quota, Seat[] seats) {
		if (votes() >= quota) {
			status = Status.WON;

			double transferable = 0;
			for (WeightedVote v : votes)
				if (v.lookNext() != -1)
					transferable += v.getWeight();
			double factor = (votes() - quota) / transferable;

			for (WeightedVote v : votes)
				v.updateWheight(factor);

		} else {
			status = Status.LOST;
		}

		for (WeightedVote v : votes) {
			int next;
			while (true) {
				next = v.getNext();
				if (next == -1)
					break;
				if (seats[next].status == Status.PENDING) {
					seats[next].addVote(v);
					break;
				}

			}
		}
	}