diff --git a/src/@dseries/merge.m b/src/@dseries/merge.m
index 923fe3afd33fec2ca76b4f0f1614892c374168cc..25b9385a7d902b1694bc8d89e2f459cf74da24ab 100644
--- a/src/@dseries/merge.m
+++ b/src/@dseries/merge.m
@@ -45,6 +45,8 @@ q = dseries();
 
 [q.name, IBC, ~] = unique([o.name; p.name], 'last');
 
+[list_of_common_variables, iO, iP] = intersect(o.name, p.name);
+
 tex = [o.tex; p.tex];
 q.tex = tex(IBC);
 
@@ -79,7 +81,7 @@ elseif firstdate(o) >= firstdate(p)
     diff = firstdate(o) - firstdate(p);
     q_nobs = max(nobs(o) + diff, nobs(p));
     q.data = NaN(q_nobs, vobs(q));
-    Z1 = [NaN(diff, vobs(o));o.data];
+    Z1 = [NaN(diff, vobs(o)); o.data];
     if nobs(q) > nobs(o) + diff
         Z1 = [Z1; NaN(nobs(q)-(nobs(o) + diff), vobs(o))];
     end
@@ -89,6 +91,15 @@ elseif firstdate(o) >= firstdate(p)
     end
     Z = [Z1 Z2];
     q.data = Z(:,IBC);
+    if ~isempty(list_of_common_variables)
+        for i=1:length(iP)
+            jO = iO(i);
+            jP = iP(i);
+            jQ = find(strcmp(o.name{jO}, q.name));
+            id = isnan(q.data(:,jQ)) & ~isnan(Z1(:,jO)) & isnan(Z2(:,jP));
+            q.data(id, jQ) = Z1(id,jO);
+        end
+    end
     q_init = firstdate(p);
 else
     diff = firstdate(p) - firstdate(o);
@@ -104,6 +115,15 @@ else
     end
     Z = [Z2 Z1];
     q.data = Z(:,IBC);
+    if ~isempty(list_of_common_variables)
+        for i=1:length(iP)
+            jO = iO(i);
+            jP = iP(i);
+            jQ = find(strcmp(o.name{jO}, q.name));
+            id = isnan(q.data(:,jQ)) & isnan(Z1(:,jP)) & ~isnan(Z2(:,jO));
+            q.data(id, jQ) = Z2(id,jO);
+        end
+    end
     q_init = firstdate(o);
 end