diff --git a/doc/dynare.texi b/doc/dynare.texi
index 81adc9e76e2905e733d470046ce27b14ad971ef3..950289e52ed51045933936e013326cc57630a407 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -2569,6 +2569,15 @@ function returning several arguments:
 Dynare will automatically generate a steady state file using the
 information provided in this block.
 
+@customhead{Steady state file for deterministic models}
+
+@code{steady_state_model} block works also with deterministic
+models. An @code{initval} block and, when necessary, an @code{endval}
+block, is used to set the value of the exogenous variables. Each
+@code{initval} or @code{endval} block must be followed by @code{steady}
+to execute the function created by @code{steady_state_model} and set the
+initial, respectively terminal, steady state.
+
 @examplehead
 
 @example
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 34d2e653a231cd9b009e50dc3e73a4d1d04ad36a..9daa9b2b1142db3ccf6913ede36d5bacb57b04d0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -125,7 +125,13 @@ MODFILES = \
 	second_order/ds1.mod \
 	second_order/ds2.mod \
 	ep/rbc.mod \
-	ep/linear.mod
+	ep/linear.mod \
+	deterministic_simulations/deterministic_model_purely_forward.mod \
+	deterministic_simulations/rbc_det1.mod \
+	deterministic_simulations/rbc_det2.mod \
+	deterministic_simulations/rbc_det3.mod \
+	deterministic_simulations/rbc_det4.mod \
+	deterministic_simulations/rbc_det5.mod
 
 EXTRA_DIST = \
 	$(MODFILES) \
diff --git a/tests/deterministic_simulations/deterministic_model_purely_forward.mod b/tests/deterministic_simulations/deterministic_model_purely_forward.mod
new file mode 100644
index 0000000000000000000000000000000000000000..c13e5e0559761d17fdfe4530ae82be767caa921f
--- /dev/null
+++ b/tests/deterministic_simulations/deterministic_model_purely_forward.mod
@@ -0,0 +1,54 @@
+var y i pi rbar ;
+
+varexo r tauw taus taua gn;
+
+parameters khia khiw khis phipi phiy taubs taubw tauba w sigma psi kappa alpha mu beta teta;
+
+teta = 12.7721;
+sigma = 1.1599;
+beta = 0.9970;
+alpha = 0.7747;
+mu = 0.9030;
+taubs = 0.05;
+taubw = 0.02;
+tauba = 0;
+w = 1.5692;
+phipi = 1.5;
+phiy = 0.5/4;
+
+khia = (1-beta)/(1-tauba);
+khiw = 1/(1-taubw);
+khis = 1/(1+taubs);
+psi = 1/(sigma + w);
+kappa = (1-alpha)*(1-alpha*beta)*(sigma+w)/(alpha*(1+w*teta));
+
+model(linear);
+y = y(+1)-sigma*(i-pi(+1)-r)+(gn-gn(+1))+(sigma)^-1*khis*(taus(+1)-taus)+sigma*khia*taua;
+
+pi=kappa*y+kappa*psi*(khiw*tauw+khis*taus-sigma*gn)+beta*pi(+1);
+
+i=max(0,r+phipi*pi+phiy*y);
+
+rbar = -((kappa*phipi+(1-beta*mu)*phiy)*sigma^-1*khia*taus)/((1-mu+sigma^-1*phiy)*(1-beta*mu)+kappa*sigma^-1*(phipi-mu))
+- (((1-mu)*kappa*psi*phipi+sigma^-1*mu*kappa*psi*phiy)*khiw*tauw)/((1-mu+sigma^-1*phiy)*(1-beta*mu)+kappa*sigma*(phipi-mu))
+-(kappa*sigma*(1-mu)*(sigma^-1-psi)*phipi+((1-mu)*(1-beta*mu)-kappa*psi*mu)*phiy)*(gn-sigma^-1*khis*taus)/((1-mu-sigma^-1*phiy)*(1-beta*mu)+kappa*sigma^-1*(phipi-mu));
+
+end;
+
+initval;
+y=0;
+i=-log(beta);
+pi=0;
+rbar = 0;
+end;
+
+steady;
+check;
+
+shocks;
+var r;
+periods 1:9;
+values -0.0104;
+end;
+
+simul(periods=2100);
diff --git a/tests/deterministic_simulations/rbc_det1.mod b/tests/deterministic_simulations/rbc_det1.mod
new file mode 100644
index 0000000000000000000000000000000000000000..e0a6877b6db659b789d73d5d58d3c94ce7c2b371
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det1.mod
@@ -0,0 +1,75 @@
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+efficiency = EfficiencyInnovation/(1-rho);
+Efficiency = effstar*exp(efficiency);
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/Efficiency)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+end;
+
+steady;
+
+ik = varlist_indices('Capital',M_.endo_names);
+CapitalSS = oo_.steady_state(ik);
+
+histval;
+Capital(0) = CapitalSS/2;
+end;
+
+simul(periods=300);
+
+rplot Consumption;
+rplot Capital;
\ No newline at end of file
diff --git a/tests/deterministic_simulations/rbc_det2.mod b/tests/deterministic_simulations/rbc_det2.mod
new file mode 100644
index 0000000000000000000000000000000000000000..7c34d592ff669dccf43a78c86c9be51a06976da4
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det2.mod
@@ -0,0 +1,75 @@
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/effstar)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+Efficiency=effstar;
+efficiency=0;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+LagrangeMultiplier=0;
+end;
+
+//steady;
+
+shocks;
+var EfficiencyInnovation;
+periods 1;
+values -0.1;
+end;
+
+simul(periods=300);
+
+rplot Consumption;
+rplot Capital;
\ No newline at end of file
diff --git a/tests/deterministic_simulations/rbc_det3.mod b/tests/deterministic_simulations/rbc_det3.mod
new file mode 100644
index 0000000000000000000000000000000000000000..be9f5ff3ecaf69ee3029e028cc6b9cf308aaad64
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det3.mod
@@ -0,0 +1,75 @@
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/effstar)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+Efficiency=effstar;
+efficiency=0;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+LagrangeMultiplier=0;
+end;
+
+steady;
+
+shocks;
+var EfficiencyInnovation;
+periods 4, 5, 6, 7, 8;
+values 0.04, 0.05, 0.06, 0.07, 0.08;
+end;
+
+simul(periods=300);
+
+rplot Consumption;
+rplot Capital;
\ No newline at end of file
diff --git a/tests/deterministic_simulations/rbc_det4.mod b/tests/deterministic_simulations/rbc_det4.mod
new file mode 100644
index 0000000000000000000000000000000000000000..cdee86dd5b81ac171f043e800dde1380236592ad
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det4.mod
@@ -0,0 +1,78 @@
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+efficiency = EfficiencyInnovation/(1-rho);
+Efficiency = effstar*exp(efficiency);
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/Efficiency)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+end;
+
+initval;
+EfficiencyInnovation = 0;
+end;
+
+steady;
+
+endval;
+EfficiencyInnovation = (1-rho)*log(1.05);
+end;
+
+steady;
+
+simul(periods=300);
+
+rplot Consumption;
+rplot Capital;
\ No newline at end of file
diff --git a/tests/deterministic_simulations/rbc_det5.mod b/tests/deterministic_simulations/rbc_det5.mod
new file mode 100644
index 0000000000000000000000000000000000000000..7fcd4d0b67bc88b217deb5936c67cf69fa6032e0
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det5.mod
@@ -0,0 +1,84 @@
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+efficiency = EfficiencyInnovation/(1-rho);
+Efficiency = effstar*exp(efficiency);
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/Efficiency)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+end;
+
+initval;
+EfficiencyInnovation = 0;
+end;
+
+steady;
+
+endval;
+EfficiencyInnovation = (1-rho)*log(1.05);
+end;
+
+steady;
+
+shocks;
+var EfficiencyInnovation;
+periods 1:5;
+values 0;
+end;
+
+simul(periods=300);
+
+rplot Consumption;
+rplot Capital;
\ No newline at end of file