diff --git a/matlab/k_order_pert.m b/matlab/k_order_pert.m
index 44e40c53ea866caa5b556304311ae76a92736000..7627970cec4ecde3d05bdcf60270902e01ace885 100644
--- a/matlab/k_order_pert.m
+++ b/matlab/k_order_pert.m
@@ -30,10 +30,6 @@ if M.maximum_endo_lead == 0 && order>1
            'backward models'])
 end
 
-if order > 3
-    error('order > 3 isn''t implemented')
-end
-
 [err, dynpp_derivs, dyn_derivs] = k_order_perturbation(dr,M,options);
 if err
     info(1)=9;
diff --git a/mex/sources/k_order_perturbation/k_order_perturbation.cc b/mex/sources/k_order_perturbation/k_order_perturbation.cc
index 998402718c14cb26e61cc7fa9289b9ec9550e469..f95c2bad3fdf3df0ba3f21db37bea2de13b9a248 100644
--- a/mex/sources/k_order_perturbation/k_order_perturbation.cc
+++ b/mex/sources/k_order_perturbation/k_order_perturbation.cc
@@ -96,8 +96,8 @@ extern "C" {
     if (!mxIsNumeric(mxFldp))
       DYN_MEX_FUNC_ERR_MSG_TXT("options_.order must be a numeric value");
     kOrder = static_cast<int>(mxGetScalar(mxFldp));
-    if (kOrder < 1 || kOrder > 3)
-      DYN_MEX_FUNC_ERR_MSG_TXT("options_.order must be between 1 and 3");
+    if (kOrder < 1)
+      DYN_MEX_FUNC_ERR_MSG_TXT("options_.order must be at least 1");
 
     double qz_criterium = 1+1e-6;
     mxFldp = mxGetField(options_, 0, "qz_criterium");