Good method for changing movement speed?

In the game I’m developing, a character’s movement speed changes frequently, from being slowed by frost, to sprinting, to being weakened, etc. Whenever I try to leave this as it is, it usually results in the character speeding up overtime. The reason for this is because a character’s walkspeed to my knowledge does not go below 0 to store the speed that was slowed down beyond 0.

To fix this, I’ve tried creating a value called “Stored Speed”, but it’s a hassle to work with. I was wondering if there was a more efficient way to store walkspeed on a character if it goes below 0?