diff --git a/tests/pac/trend-component-14/example1.mod b/tests/pac/trend-component-14/example1.mod
index 232dca925155f3611f82df84f9db3d3255d2674c..4041e52b8cbd1339df1a6fa7676300cadebcf3d2 100644
--- a/tests/pac/trend-component-14/example1.mod
+++ b/tests/pac/trend-component-14/example1.mod
@@ -87,7 +87,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
-end;
\ No newline at end of file
+end;
diff --git a/tests/pac/trend-component-14/substitution.mod b/tests/pac/trend-component-14/substitution.mod
index 466807ad1233e51753a32f816314152f7215b4f6..7baa7aba95757ae3b8c2c31eab1408b19ce203bf 100644
--- a/tests/pac/trend-component-14/substitution.mod
+++ b/tests/pac/trend-component-14/substitution.mod
@@ -78,9 +78,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 end;
 
 if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
diff --git a/tests/pac/var-5/example1.mod b/tests/pac/var-5/example1.mod
index 779045887d9dbc1954d90d70af445a575698ea66..3de7e0e1ea8346039a3593b53e5821dc0d1647d6 100644
--- a/tests/pac/var-5/example1.mod
+++ b/tests/pac/var-5/example1.mod
@@ -67,7 +67,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-5/substitution.mod b/tests/pac/var-5/substitution.mod
index 29d837f70e09a4908813932d295616b479a15e06..c33825f02cdcd8005f8d62cc1af7f6f2f671610b 100644
--- a/tests/pac/var-5/substitution.mod
+++ b/tests/pac/var-5/substitution.mod
@@ -59,9 +59,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 end;
 
 if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
diff --git a/tests/pac/var-6/example1.mod b/tests/pac/var-6/example1.mod
index 58a5b08fc4f23b9a8b3a261167b76dbea9b50438..4e85012d0c66fa46a2a41462abf6f6b133414d8b 100644
--- a/tests/pac/var-6/example1.mod
+++ b/tests/pac/var-6/example1.mod
@@ -71,7 +71,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-6/substitution.mod b/tests/pac/var-6/substitution.mod
index f5f1c665a6682b7e770dea512d4c3570f04679cb..3e3e9203acb593d41e76919ad7273c33a40c897b 100644
--- a/tests/pac/var-6/substitution.mod
+++ b/tests/pac/var-6/substitution.mod
@@ -64,9 +64,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-7/example1.mod b/tests/pac/var-7/example1.mod
index ccda33575a82ca16cb4fba884c2a7ebf08611312..1520c842ed71aba7434e61f63dc52b3ddd641afd 100644
--- a/tests/pac/var-7/example1.mod
+++ b/tests/pac/var-7/example1.mod
@@ -73,7 +73,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-7/substitution.mod b/tests/pac/var-7/substitution.mod
index 1e906fe72f0f01b23374c4e327ebf03827deda3a..7dba54ed298697aa7321eece28ae242ed56fef87 100644
--- a/tests/pac/var-7/substitution.mod
+++ b/tests/pac/var-7/substitution.mod
@@ -67,9 +67,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-8/example1.mod b/tests/pac/var-8/example1.mod
index 8885873b5884564d1841098ce708c4ccf115ff53..1c0d230ab76a9d91ad0cf268d2012c97a013d197 100644
--- a/tests/pac/var-8/example1.mod
+++ b/tests/pac/var-8/example1.mod
@@ -84,7 +84,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-8/substitution.mod b/tests/pac/var-8/substitution.mod
index 9f909dbb32a68d60790d84ccbfa29cc05d42cb91..f4a75ef26a1932f8c602676f76286925d10d2a14 100644
--- a/tests/pac/var-8/substitution.mod
+++ b/tests/pac/var-8/substitution.mod
@@ -64,9 +64,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-9/example1.mod b/tests/pac/var-9/example1.mod
index 0a5fcda4a19a2e17b8398ef31699b9bc6bada074..ce91ee6131933d3b7dc038ed53508b601244c0c8 100644
--- a/tests/pac/var-9/example1.mod
+++ b/tests/pac/var-9/example1.mod
@@ -88,7 +88,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-9/substitution.mod b/tests/pac/var-9/substitution.mod
index d9e70378b6759b1bb374108a04e4c1e25da19f24..203a583018e23d7e8c95f3b87da6ebbc0add7641 100644
--- a/tests/pac/var-9/substitution.mod
+++ b/tests/pac/var-9/substitution.mod
@@ -65,9 +65,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')