From 9acac86bd8371c202e68d653ee4672fb0aae2544 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Ry=C3=BBk=29?=
 <stepan@adjemian.eu>
Date: Thu, 14 Oct 2021 19:33:44 +0200
Subject: [PATCH] Fix cherrypick for PAC equations in case of rule of thumb
 agents.

The correction for growth neutrality should be substituted in the optimal part
of the PAC equations.

(cherry picked from commit 12694ff9347b2191b4e0f6a32cb038956cb38f53)
---
 matlab/cherrypick.m | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/matlab/cherrypick.m b/matlab/cherrypick.m
index 9e1727b883..834592e5ec 100644
--- a/matlab/cherrypick.m
+++ b/matlab/cherrypick.m
@@ -135,10 +135,22 @@ try
         end
         if ~isempty(ispac)
             [rhs, growthneutralitycorrection] = write_expectations(eqtags{i}, ispac.name, 'pac');
-            lhs = sprintf('%s_PE', eqtags{i});
-            RHS = strrep(RHS, sprintf('pac_expectation(model_name = %s)', ispac.name), lhs);
-            if ~isempty(growthneutralitycorrection)
-                RHS = sprintf('%s + %s', RHS, growthneutralitycorrection);
+            if ~isempty(rhs)
+                lhs = sprintf('%s_PE', eqtags{i});
+                if isempty(growthneutralitycorrection)
+                    RHS = strrep(RHS, sprintf('pac_expectation(model_name = %s)', ispac.name), lhs);
+                else
+                    RHS = strrep(RHS, sprintf('pac_expectation(model_name = %s)', ispac.name), sprintf('%s+%s', lhs, growthneutralitycorrection));
+                end
+            else
+                % MCE version of the PAC equation.
+                [rhs, growthneutralitycorrection] = write_pac_mce_expectations(eqtags{i}, ispac.name);
+                lhs = sprintf('%s_Z', eqtags{i});
+                if isempty(growthneutralitycorrection)
+                    RHS = strrep(RHS, sprintf('pac_expectation(model_name = %s)', ispac.name), lhs);
+                else
+                    RHS = strrep(RHS, sprintf('pac_expectation(model_name = %s)', ispac.name), sprintf('%s+%s', lhs, growthneutralitycorrection));
+                end
             end
         end
         % Print equation for unrolled PAC/VAR-expectation and update
-- 
GitLab