diff --git a/src/@dseries/subsasgn.m b/src/@dseries/subsasgn.m
index e3dcfe9ded2454528a514b90aa4de99d63d646d9..200d2e15e7e2a12f3d23045dc58faf70a7af763b 100644
--- a/src/@dseries/subsasgn.m
+++ b/src/@dseries/subsasgn.m
@@ -164,29 +164,24 @@ switch length(S)
               end
           elseif ischar(S(1).subs{1}) && isequal(S(1).subs{1},':') && isempty(A)
               if isnumeric(B)
-                  if isequal(rows(B),1)
-                      A.data = repmat(B,A.dates.ndat,1);
-                  elseif isequal(rows(B),A.dates.ndat)
-                      A.data = B;
+                  A.data = B;
+                  A.name = default_name(vobs(A));
+                  A.tex = name2tex(A.name);
+                  if isempty(A.dates)
+                      if isempty(A.dates.freq)
+                          init = dates('1Y')
+                      else
+                          init = dates(A.dates.freq, 1, 1);
+                      end
                   else
-                      error('dseries::subsasgn: Wrong syntax!')
-                  end
-                  if isempty(A.name)
-                      A.name = default_name(vobs(A));
-                      A.tex = name2tex(A.name);
+                      init = A.dates(1);
                   end
+                  A.dates = init:(init+rows(B)-1);
               elseif isdseries(B)
-                  if isequal(nobs(B), 1)
-                      A.data = repmat(B.data,A.dates.ndat,1);
-                  elseif isequal(nobs(B), A.dates.ndat)
-                      A.data = B;
-                  else
-                      error('dseries::subsasgn: Wrong syntax!')
-                  end
-                  if isempty(A.name)
-                      A.name = B.name;
-                      A.tex = B.tex;
-                  end
+                  A.data = B.data;
+                  A.name = B.name;
+                  A.tex = N.tex;
+                  A.dates = B.dates;
               end
               return
           else