diff --git a/matlab/@dseries/mpower.m b/matlab/@dseries/mpower.m
index 89b0b1049379c4da13f96c2c6b86b85d3d43d9cc..d144f3da668ecc59f2b242a24ac1b03987899d06 100644
--- a/matlab/@dseries/mpower.m
+++ b/matlab/@dseries/mpower.m
@@ -40,7 +40,25 @@ function A = mpower(B,C) % --*-- Unitary tests --*--
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if isdseries(B) && isnumeric(C) && isreal(C) && isscalar(C)
+if isnumeric(B) && isvector(B) && length(B)>1
+    if ~isdseries(C)
+        error('dseries::mpower: Second input argument must be a dseries object!')
+    end
+    A = C;
+    A.data = bsxfun(@power,C.data,B);
+    return;
+end
+
+if isnumeric(C) && isvector(C) && length(C)>1
+    if ~isdseries(B)
+        error('dseries::mpower: First input argument must be a dseries object!')
+    end
+    A = B;
+    A.data = bsxfun(@power,B.data,C);
+    return
+end
+
+if isdseries(B) && isnumeric(C) && isreal(C) &&  isscalar(C)
     A = dseries();
     A.freq = B.freq;
     A.init = B.init;