Actually this is by design and fairer to the customer. Products are ordered by price (expensive -> cheap) and every 2nd item is discounted.
A = 20
B = 19
The 2nd item is free, so user pays only 20 €
If the user now adds one product:
C = 1
I think it’s fair that the user would pay 21 € for the three items, and not 39 €