Actually the democracy 3 bug was different, this one is more subtle (not a bug as such…anyway…)
I looked at the save game, and everything is working as the code intends, however…it needs improving because of how harshly it works. Here is a rough explanation:
Each party has an approval level they center around. In 2 parties that 100% and 0% (you and the opposition) for 3 parties its 100%, 50%, 0%. When voters approval of the government gets close to those points, they get sympathy for that party. When their sympathy goes over a certain level, they join the party, when it goes even higher, they become activists.
We define ‘close’ in this sense as around 10% variance, plus 10% based on the activism of the individual voter. Note that young people have higher activism than average. So for an example:
If voter A has 86% approval of the government, and 60% activism, then he needs to be with 10% + 6% = 16% of the party base line (100%) to gain sympathy for it. He is only 14% away from this, so he gains sympathy. If nothing changes, eventually he will join, if their approval goes higher they will become an activist (leaving works in reverse as you expect).
So whats the problem?
Its too harsh. There is not (yet) fuzziness enough. The 10% variance for activism is too narrow, and the sympathy leads to immediate party membership change, rather than gradual (which is how D3 did it).
What I need is to have a variable rate at which an individual joins or leaves a party, rather than being immediately based on sympathy (In other words it takes time for them to realize that yes…they REALLY do identify with these people a lot!), and I likely need to fuzz that 10% a bit higher, and check we have a smooth distribution of activism.
So when I do all this, in the save game given, what should happen is the party membership WILL have dropped really low due to your actions, but it would have taken more turns, and there would still be a few desperate stragglers who have stayed with the party out of misplaced loyalty