Putting "shocks" before "endval" leads to wrong results
In a deterministic setup with both temporary and permanent shocks, the order of the shocks and endval blocks matter. Actually, putting shocks before endval leads to wrong results.
shocks uses set_shocks.m, which fills in oo_.exo_simul; the point is that, if endval has not been used, this structure is empty, so set_shocks fills it, at date of shocks, for ''all'' the exogenous, and using the ''initial'' steady state value.
When simul is finally called, it completes oo_.exo_simul with the ''final'' exogenous steady state, but only for those periods which have no temporary shocks. So at the dates with temporary shocks, the value of exogenous which are permanently shocked is wrong.
A quick fix is to forbid the use of shocks before endval.
A cleaner fix is to modify set_shocks.m so that it only sets values for the exogenous which are temporarily shocked, and leaves NaN for other exogenous. It would be simul's job to fill in the holes.