diff --git a/matlab/shock_decomposition/annualized_shock_decomposition.m b/matlab/shock_decomposition/annualized_shock_decomposition.m
index d9180cc31ef8c347f83d75f7c05408c09a4ed14b..962a0910c13b6c261da19af17dc824114a6f0588 100644
--- a/matlab/shock_decomposition/annualized_shock_decomposition.m
+++ b/matlab/shock_decomposition/annualized_shock_decomposition.m
@@ -129,7 +129,7 @@ if realtime_==0
         myopts=options_;
         myopts.plot_shock_decomp.type='qoq';
         myopts.plot_shock_decomp.realtime=0;
-        z = plot_shock_decomposition(M_,oo_,myopts,[]);
+        z = plot_shock_decomposition(M_,oo_,myopts,[],true);
     else
         z = oo_;
     end
@@ -139,7 +139,7 @@ if realtime_==0
             myopts=options_;
             myopts.plot_shock_decomp.type='qoq';
             myopts.plot_shock_decomp.realtime=0;
-            [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux.y);
+            [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux.y,true);
             aux.y=y_aux;
             aux.yss=steady_state_aux;
         end
@@ -158,13 +158,13 @@ if realtime_ && isstruct(oo_) && isfield(oo_, 'realtime_shock_decomposition')
         myopts.plot_shock_decomp.realtime=1;
         myopts.plot_shock_decomp.vintage=i;
         % retrieve quarterly shock decomp
-        z = plot_shock_decomposition(M_,oo_,myopts,[]);
+        z = plot_shock_decomposition(M_,oo_,myopts,[],true);
         zdim = size(z);
         z = z(i_var,:,:);
         if isstruct(aux)
             if ischar(aux0.y)
                 % retrieve quarterly shock decomp for aux variable
-                [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux0.y);
+                [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux0.y,true);
                 aux.y=y_aux;
                 aux.yss=steady_state_aux;
             end
@@ -185,13 +185,13 @@ if realtime_ && isstruct(oo_) && isfield(oo_, 'realtime_shock_decomposition')
             if qvintage_>i-4 && qvintage_<i
                 myopts.plot_shock_decomp.vintage=qvintage_;
                 % retrieve quarterly shock decomp
-                z = plot_shock_decomposition(M_,oo_,myopts,[]);
+                z = plot_shock_decomposition(M_,oo_,myopts,[],true);
                 z(:,:,end+1:zdim(3))=nan; % fill with nan's remaining time points to reach Q4
                 z = z(i_var,:,:);
                 if isstruct(aux)
                     if ischar(aux0.y)
                         % retrieve quarterly shock decomp for aux variable
-                        [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux0.y);
+                        [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux0.y,true);
                         y_aux(:,:,end+1:zdim(3))=nan; % fill with nan's remaining time points to reach Q4
                         aux.y=y_aux;
                         aux.yss=steady_state_aux;
diff --git a/matlab/shock_decomposition/plot_shock_decomposition.m b/matlab/shock_decomposition/plot_shock_decomposition.m
index 3463eecedabc6cbbcc8efb06efda715765a54030..7b95613a75226013efef0b845bc0c61bc0b7833c 100644
--- a/matlab/shock_decomposition/plot_shock_decomposition.m
+++ b/matlab/shock_decomposition/plot_shock_decomposition.m
@@ -1,4 +1,4 @@
-function [out, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist)
+function [out, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist,get_decomp_only)
 % function plot_shock_decomposition(M_,oo_,options_,varlist)
 % Plots the results of shock_decomposition
 %
@@ -7,11 +7,12 @@ function [out, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist)
 %    oo_:         [structure]  Storage of results
 %    options_:    [structure]  Options
 %    varlist:     [char]       List of variables
-%
+%    get_decomp_only    [bool] indicator on whether to only return with
+%                               basic decomposition (required for e.g. annualized_shock_decomposition)
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright © 2016-2019 Dynare Team
+% Copyright © 2016-2023 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -28,6 +29,10 @@ function [out, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <https://www.gnu.org/licenses/>.
 
+if nargin<5
+    get_decomp_only=false;
+end
+
 options_.nodisplay = options_.plot_shock_decomp.nodisplay;
 options_.graph_format = options_.plot_shock_decomp.graph_format;
 
@@ -532,7 +537,7 @@ if steadystate
     options_.plot_shock_decomp.steady_state=steady_state;
 end
 
-if nargout == 2
+if get_decomp_only
     out=z(i_var,:,:);
     steady_state = steady_state(i_var);
     return