What if before votes are cast, each political party publishes a list of other parties in the same election that they're ok with.
After the ballots are counted, go through the parties from least to most votes. Any excess votes they have go to a party they choose from their list, but that party must be one with more votes than them.
By "excess", I mean votes that aren't enough to give them any more people.
Means you can't have spoilers. And should be possible to add to many existing systems without getting new voting machines.
I should have a blog.