diff --git a/matlab/DsgeSmoother.m b/matlab/DsgeSmoother.m
index e184f34ca5eba22c594743ae27030fcde5bb9aef..59b3b4c6eb59b35d8ec7f9943c80c479309685e8 100644
--- a/matlab/DsgeSmoother.m
+++ b/matlab/DsgeSmoother.m
@@ -391,8 +391,9 @@ else
             opts_simul = options_.occbin.simul;
         end
         % reconstruct smoothed variables
-        aaa=zeros(M_.endo_nbr,gend);
-        aaa(oo_.dr.restrict_var_list,:)=alphahat;
+        aaa=zeros(M_.endo_nbr,gend+1);
+        aaa(oo_.dr.restrict_var_list,1)=alphahat0;
+        aaa(oo_.dr.restrict_var_list,2:end)=alphahat;
         iTx = zeros(size(TTx));
         for k=1:gend
             if isoccbin
@@ -416,13 +417,19 @@ else
             static_var_list0 = static_var_list;
             static_var_list0(static_var_list) = ilagged;
             static_var_list(static_var_list) = ~ilagged;
-            aaa(static_var_list,k) = AS(~ilagged,:)*alphahat(:,k)+BS(~ilagged,:)*etahat(:,k)+CS(~ilagged);
-            if any(ilagged) && k>1
-                aaa(static_var_list0,k) = Tstar(ilagged,:)*alphahat(:,k-1)+Rstar(ilagged,:)*etahat(:,k)+Cstar(ilagged);
+            aaa(static_var_list,k+1) = AS(~ilagged,:)*alphahat(:,k)+BS(~ilagged,:)*etahat(:,k)+CS(~ilagged);
+            if any(ilagged) 
+                if k>1
+                    aaa(static_var_list0,k+1) = Tstar(ilagged,:)*alphahat(:,k-1)+Rstar(ilagged,:)*etahat(:,k)+Cstar(ilagged);
+                else
+                    aaa(static_var_list0,2) = Tstar(ilagged,:)*alphahat0+Rstar(ilagged,:)*etahat(:,1)+Cstar(ilagged);
+                end
+
             end
             
         end
-        alphahat=aaa;
+        alphahat0=aaa(:,1);
+        alphahat=aaa(:,2:end);
 
         % reconstruct updated variables
         bbb=zeros(M_.endo_nbr,gend);
@@ -488,6 +495,13 @@ else
             state_uncertainty=sstate_uncertainty;
             clear sstate_uncertainty
         end
+        if ~isempty(state_uncertainty0)
+            mm=size(T,1);
+            sstate_uncertainty=zeros(M_.endo_nbr,M_.endo_nbr);
+            sstate_uncertainty(oo_.dr.restrict_var_list,oo_.dr.restrict_var_list)=state_uncertainty0(1:mm,1:mm);
+            state_uncertainty0=sstate_uncertainty;
+            clear sstate_uncertainty
+        end
         
         aaa = zeros(nk,M_.endo_nbr,gend+nk);
         aaa(:,oo_.dr.restrict_var_list,:)=aK;