Reading this code I can't help but try to evaluate it in my head.
Question: is there a bug for the assignment of party_not_at_fault? Would you want party2 to be selected if the condition is true?
Other languages I've used have the first part be the true branch, and the other the false branch.