In order to replicate recent NK models which implement the Zero Lower Bound, so an interest rate which is subject to the constrained of being positive,

I have derived a continuous version of the Kronecker Delta function(an IF function) for the monetary policy rule, so it gives Rzlb®=R for R>0 and Rzlb®=0 for R<0.

The function I used is:

Rzlb = k*log(1-exp(-1/k)+exp(r/k));

Which perfectly approximates the “If” function for when k tends to zero.

So I have set k=1/1000 #so some very small value ( a plot can be seen here: wolframalpha.com/input/?i=%281%2F1000%29*log%281-exp%28-1%2F%281%2F1000%29%29%2Bexp%28x%2F%281%2F1000%29%29%29 )

Also the taylor series approximation follows the “If” function, although it is dependant from which value the approximation is made whether it will give zero everywhere or Rzlb=R everywhere.

I figured for small deviations in R this shouldn’t be a problem, only when crossing between negative and positive values.

however, after I ran some models, and saved the output using the dynasave command, I found when comparing the Rzlb output with its R input, the Rzlb function still gave negative values.

I am using the Stoch simulate command, and the function within the log shouldnt be zero.

Any ideas why it doesn’t work?

[code]

y = y(+1) - 1/sigmaC*(r-pi(+1)) + s_b;

pi = beta*pi(+1) + ((1-theta)*(1-beta*theta)/theta)*(sigmaC+sigmaL)*y + s_p;

% Monetary Policy Rule

```
% R input where rz is the unbounded r, and r is the interest rate constrained to be positive
rz = rho*r(-1) + (1-rho)*( phi_pi*pi + phi_y*y ) + phi_dy*(y-y(-1)) + s_r ;
r = k*log(1-exp(-1/k)+exp(rz/k));[/code]
```