diff --git a/matlab/imcforecast.m b/matlab/imcforecast.m
index 2cad0a768acec9c8d527d7c5eb69770132094e12..4bb82e0d9656cd7b4d8841e3e225e8021088a889 100644
--- a/matlab/imcforecast.m
+++ b/matlab/imcforecast.m
@@ -164,7 +164,8 @@ idx = [];
 jdx = [];
 
 for i = 1:n1
-    idx = [idx ; oo_.dr.inv_order_var(strmatch(deblank(constrained_vars(i,:)),M_.endo_names,'exact'))];
+    %    idx = [idx ; oo_.dr.inv_order_var(strmatch(deblank(constrained_vars(i,:)),M_.endo_names,'exact'))];
+    idx = [idx ; oo_.dr.inv_order_var(constrained_vars(i,:))];
     jdx = [jdx ; strmatch(deblank(options_cond_fcst.controlled_varexo(i,:)),M_.exo_names,'exact')];
 end
 mv = zeros(n1,NumberOfStates);
diff --git a/preprocessor/Shocks.cc b/preprocessor/Shocks.cc
index 750b93679c9dab4268eaf34a203fe74edeaa2e74..eebd89fd0c5bcdbfcf3616565563daeb18455204 100644
--- a/preprocessor/Shocks.cc
+++ b/preprocessor/Shocks.cc
@@ -289,9 +289,9 @@ ConditionalForecastPathsStatement::writeOutput(ostream &output, const string &ba
        it != paths.end(); it++)
     {
       if (it == paths.begin())
-        output << "constrained_vars_ = '" << it->first << "';" << endl;
+        output << "constrained_vars_ = " << it->first << ";" << endl;
       else
-        output << "constrained_vars_ = char(constrained_vars_, '" << it->first << "');" << endl;
+        output << "constrained_vars_ = [constrained_vars_; " << it->first << "];" << endl;
 
       const vector<AbstractShocksStatement::DetShockElement> &elems = it->second;
       for (int i = 0; i < (int) elems.size(); i++)