diff --git a/matlab/@dynSeries/plus.m b/matlab/@dynSeries/plus.m
new file mode 100644
index 0000000000000000000000000000000000000000..78584b5eba9f1ca88d6f54e25f807d0ff566c121
--- /dev/null
+++ b/matlab/@dynSeries/plus.m
@@ -0,0 +1,104 @@
+function A = plus(B,C)
+%@info:
+%! @deftypefn {Function File} {@var{A} =} plus (@var{B},@var{C})
+%! @anchor{@dynSeries/plus}
+%! @sp 1
+%! Overloads the plus method for the Dynare time series class (@ref{dynSeries}).
+%! @sp 2
+%! @strong{Inputs}
+%! @sp 1
+%! @table @ @var
+%! @item B
+%! Dynare time series object instantiated by @ref{dynSeries}.
+%! @item C
+%! Dynare time series object instantiated by @ref{dynSeries}.
+%! @end table
+%! @sp 1
+%! @strong{Outputs}
+%! @sp 1
+%! @table @ @var
+%! @item A
+%! Dynare time series object.
+%! @end deftypefn
+%@eod:
+
+% Copyright (C) 2011, 2012 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
+
+% AUTHOR(S) stephane DOT adjemian AT univ DASH lemans DOT fr
+
+if ~isequal(B.vobs,C.vobs) && ~(isequal(B.vobs,1) || isequal(C.vobs,1))
+    error(['dynSeries::plus: Cannot add ' inputname(1) ' and ' inputname(2) ' (wrong number of variables)!'])
+end
+
+if ~isequal(B.nobs,C.nobs)
+    error(['dynSeries::plus: Cannot add ' inputname(1) ' and ' inputname(2) ' (wrong number of observations)!'])
+end
+
+if ~isequal(B.freq,C.freq)
+    error(['dynSeries::plus: Cannot add ' inputname(1) ' and ' inputname(2) ' (frequencies are different)!'])
+end
+
+if ~isequal(B.init,C.init)
+    error(['dynSeries::plus: Cannot add ' inputname(1) ' and ' inputname(2) ' (initial dates are different)!'])
+end
+
+if isempty(B)
+    A = C;
+    return
+end
+
+if isempty(C)
+    A = B;
+    return
+end
+
+A = dynSeries();
+
+A.freq = B.freq;
+A.nobs = max(B.nobs,C.nobs);
+A.vobs = max(B.vobs,C.vobs);
+A.name = repmat({'--NA--'},A.vobs,1);
+A.data = bsxfun(@plus,B.data,C.data);
+
+
+%@test:8
+%$ % Define a datasets.
+%$ A = rand(10,2); B = randn(10,1);
+%$
+%$ % Define names
+%$ A_name = {'A1';'A2'}; B_name = {'B1'};
+%$
+%$ t = zeros(4,1);
+%$
+%$ % Instantiate a time series object.
+%$ try
+%$    ts1 = dynSeries(A,[],A_name,[]);
+%$    ts2 = dynSeries(B,[],B_name,[]);
+%$    ts3 = ts1+ts2;
+%$    t(1) = 1;
+%$ catch
+%$    t = 0;
+%$ end
+%$
+%$ if length(t)>1
+%$    t(2) = dyn_assert(ts3.vobs,2);
+%$    t(3) = dyn_assert(ts3.nobs,10);
+%$    t(4) = dyn_assert(ts3.data,[A(:,1)+B, A(:,2)+B],1e-15);
+%$ end
+%$ T = all(t);
+%@eof:8