Thanks for pointing that out. I'm not sure how ogs production server ver.5 implements it. This would be best answered by @matburt or @anoek, but I'd hate to let them use their time on something that does not improve the way ogs works.
I checked several actual examples and some came up correct for the loser, but not for the winner, which is the opposite of what you described. And here is an unproven theory:
When the rating increase for the winner is +5.5, and the decrease for the loser is -3.1, increase a half of the difference in absolute values to the smaller side (smaller in absolute value). In this case 5.5 - 3.1 = 2.4, 2.4 / 2 = 1.2, 3.1 + 1.2 = 4.3, so the loser rating gets -4.3 deduction.
In the case of +2.9 and -4.8, 4.8 - 2.9 = 1.9, 1.9 / 2 = 0.95, 2.9 + 0.95 = 3.85
so the winner gets +3.85 and loser gets -4.8
This hypothesis seems to fit my spotty examples. How does adding this adjustment to your program work?