Why weights are not negative in Lasso regression?

I can understand that lasso could make some weights to zero and prevent over-fitting. But for all the figure I see about lasso regression, weight will stay at zero once it reach zero and increasing lambda won't drive it to negative? Why is that?

Let's say that $\beta$ is the vector of coefficients to be estimated by Lasso regression.
Lasso regression applies an $L1$ penalty to the coefficients. The penalty term in the objective function is $\lambda\|\beta\|_1 = \lambda \Sigma |\beta_i|$. I.e., the absolute values of the coefficients are being penalized. Therefore, negative coefficients incur the same penalty as positive coefficients of this same magnitude. So it is the absolute values of the coefficients which are driven down toward zero.
Note that an alternative form for Lasso regression is to apply the penalty term in the form of a constraint $\Sigma |\beta_i| \le t$, for some $t > 0$, rather than as an additive term in the objective function. As with the objective function form of penalty, it is the absolute value of the estimated coefficients which are being constrained (in effect, penalized). Note that for any value of $\lambda$ in the objective function penalty term, there would be some corresponding value of $t$ in the "constraint" form such that the optimal $\beta$ would be the same.