If I'm not mistaken, dt is the amount of time (in seconds) that has passed since the last tick. So, if your game runs at 60 frames (ticks) per second, then dt will always be a value around 0.0166 (i.e. 1/60). It may fluctuate a little, if you get some lag between frames.
So every tick, lerp( 0 , 30 , 3 * dt ) evaluates to approximately ...
= lerp( 0 , 30 , 3 * 0.0166 )
= lerp( 0 , 30 , 0.0498 )
So if 1.494 looks like it could be the value you were getting, then that may be the issue.
To get gradual changes in a value, you can use two variables, a Target variable that stores the desired target value, and a Follower variable that continually computes a time-smoothed version of the Target's value. The Follower variable essentially just gradually approaches the value stored in the Target variable.
I actually just posted an explanation of this Target/Follower setup with a list of events in another topic.
The example I give there shows a linear follower setup, but I generally use multiplicative follower setups in my projects, since the follower can be set every tick with only one event.
(Some day ... some day I will get that 4th egg.)