This is tricky...

In the first case:

> Should c's consensus then be 1.0 instead?

I don't think it should, as that would suggest (to me) that it was the same for all of the input assignments. 

Actually, I think what we want here is for the consensus fraction at each level to be computed based on that level and all higher levels, rather than just that level. 

For example (using your second case), instead of counting assignments where level ends with ``c`` to compute the consensus fraction of ``c``, you'd count assignments that are ``a;b;c`` to compute the consensus fraction for the third level. In that case, the consensus fractions would be computed on ``a;b;c``, ``a;d;e``, and ``z;y;c``, so we'd have 0.5, 0.25, and 0.25, respectively, which is what they should be. 

Let me know if you disagree. Thanks for the very useful review of this code!