diff --git a/matlab/dsge_likelihood.m b/matlab/dsge_likelihood.m
index 58272ae05197b007dc05963b4f3c8086758b0c43..7f32d6a71327adb4d69f64fe28e52a79fba08714 100644
--- a/matlab/dsge_likelihood.m
+++ b/matlab/dsge_likelihood.m
@@ -809,6 +809,7 @@ if analytic_derivation
 else
     lnprior = priordens(xparam1,BayesInfo.pshape,BayesInfo.p6,BayesInfo.p7,BayesInfo.p3,BayesInfo.p4);
 end
+
 if DynareOptions.endogenous_prior==1
   if DynareOptions.lik_init==2 || DynareOptions.lik_init==3
     error('Endogenous prior not supported with non-stationary models')
@@ -820,6 +821,11 @@ else
   fval    = (likelihood-lnprior);
 end
 
+if DynareOptions.prior_restrictions.status
+    tmp = feval(DynareOptions.prior_restrictions.routine, Model, DynareResults, DynareOptions, DynareDataset, DatasetInfo);
+    fval = fval - tmp;
+end
+
 if isnan(fval)
     info = 47;
     fval = objective_function_penalty_base + 100;
diff --git a/matlab/dynare_estimation_init.m b/matlab/dynare_estimation_init.m
index 1bdbf0f59ac6f24dcdedf962591923ad1e7749ec..f0a4636c67981d4ad994afac54992a1b09dd39ff 100644
--- a/matlab/dynare_estimation_init.m
+++ b/matlab/dynare_estimation_init.m
@@ -130,6 +130,12 @@ if ~isempty(estim_params_)
     [xparam1,estim_params_,bayestopt_,lb,ub,M_] = set_prior(estim_params_,M_,options_);
 end
 
+% Check if a _prior_restrictions.m file exists
+if exist([M_.fname '_prior_restrictions.m'])
+    options_.prior_restrictions.status = 1;
+    options_.prior_restrictions.routine = str2func([M_.fname '_prior_restrictions.m']);
+end
+
 % Check that the provided mode_file is compatible with the current estimation settings.
 if ~isempty(estim_params_) && ~isempty(options_.mode_file) && ~options_.mh_posterior_mode_estimation
     number_of_estimated_parameters = length(xparam1);
diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 53a2d5362ec39879d6d8cc1f390beafdc35ab902..39f9659d19b58d1ce8bd0360e09c695d88b1fdc5 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -394,6 +394,10 @@ options_.MCMC_jumping_covariance='hessian';
 options_.use_calibration_initialization = 0;
 options_.endo_vars_for_moment_computations_in_estimation=[];
 
+% Prior restrictions
+options_.prior_restrictions.status = 0;
+options_.prior_restrictions.routine = [];
+
 options_.mode_compute = 4;
 options_.mode_file = '';
 options_.moments_varendo = 0;