A unit that has a base max speed of 3 has 2 buffs:
- A: max speed of 0.5
- B: min speed of 1; max speed of 1

=> As a result, the max and min speed values are ignored. The unit isn't slowed at all and keeps moving with a speed of 3.

If you alter the min speed to 0.5, the total changes are valid again and the speed limits are altered to 0.5.

I think the implementation shouldn't completely ignore all speed limitations, if they conflict with each other.
Combining the limitations to alter the speed, seems better.

I would suggest the following rules:
1. max value is the lowest value of all buffs' max speed changes
2. min speed value the highest one with the max speed as upper cap

Maybe you intended it that way and the min speed cap is buggy resulting in no speed limit changes at all.