Sorry, it's a bit hard for me to explain, but basically every tick you are setting the speed modifier back to 0, which means normal (max) speed. When you start moving, the game moves your character one tick before your code reads the is moving part, which then sets the code to apply the movement speed modifier of -0.9. This doesn't take effect until the second tick, which is the problem. In your code you need to set this value earlier by setting it while not moving, so that when you do start moving, the progressive running starts from -0.9 instead of 0. The place in the code I mention putting an else statement is where this might fit in properly. The code I added was more of a pseudocode implemention, rather than a direct use case.
I'll do some more testing to see if I can fix it, but I'll have to spend some time learning the source code :)