I always thought lerp returns a value, not changing a value. I thought it takes A and B, and uses C to pick a spot between the two. Going from 0(A) to 1(B). So if I set lerp(0,100,5*dt) to run every tick, why wouldn't it work? I', sorry if I'm not getting it. If you don't want to explain it anymore, no worries. :)
I think you're confused about what dt does.
Dt is the time since the last tick, and will stay the same as long as the frame rate is constant.
Also you might take a look at the fade behavior.
Also comparing the last value as a component of time isn't exactly correct, in that it only effects time because of the amount that it adds each tick, IE 5*dt would add less than 20*dt.