diff --git a/matlab/compute_moments_varendo.m b/matlab/compute_moments_varendo.m
index 5b374b202e65c45d2a878e1344bcf0d2be3cbffd..84565481fb4b419320eb7ceec71ffb20f9b75cfc 100644
--- a/matlab/compute_moments_varendo.m
+++ b/matlab/compute_moments_varendo.m
@@ -151,7 +151,7 @@ if M_.exo_nbr > 1
     end
     skipline();
     if ~all(diag(M_.H)==0)
-        if isoctave || matlab_ver_less_than('8.1')
+        if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
             [observable_name_requested_vars, varlist_pos] = intersect_stable(var_list_, options_.varobs);
         else
             [observable_name_requested_vars, varlist_pos] = intersect(var_list_, options_.varobs, 'stable');
diff --git a/matlab/conditional_variance_decomposition.m b/matlab/conditional_variance_decomposition.m
index a77d3ea12a74f1f286bd674ecab22c24817edf5a..8e585acc097ae2ba0b3db8774fe2c339d0152e26 100644
--- a/matlab/conditional_variance_decomposition.m
+++ b/matlab/conditional_variance_decomposition.m
@@ -89,7 +89,7 @@ end
 % Measurement error
 
 if ~all(diag(StateSpaceModel.measurement_error)==0)
-    if isoctave || matlab_ver_less_than('8.1')
+    if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
         [observable_pos,index_subset,index_observables]=intersect_stable(SubsetOfVariables,StateSpaceModel.observable_pos);
     else
         [observable_pos,index_subset,index_observables]=intersect(SubsetOfVariables,StateSpaceModel.observable_pos,'stable');
diff --git a/matlab/conditional_variance_decomposition_ME_mc_analysis.m b/matlab/conditional_variance_decomposition_ME_mc_analysis.m
index cfe9a1b1553ed5bed3c53ef67b8d92f34cadbd0f..43a7fc09571b3524a4c6ab848a7ced0fb7c3d9df 100644
--- a/matlab/conditional_variance_decomposition_ME_mc_analysis.m
+++ b/matlab/conditional_variance_decomposition_ME_mc_analysis.m
@@ -63,7 +63,7 @@ if isempty(exogenous_variable_index)
     end
 end
 
-if isoctave || matlab_ver_less_than('8.1')
+if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
     [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(var_list,options_.varobs);
 else
     [observable_pos_requested_vars,index_subset,index_observables]=intersect(var_list,options_.varobs,'stable');
diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m
index fd2e61b6b8b813346494003e677c78ab0c285f68..6c1abe09a7254642f40c399df34cdf2a1050ce16 100644
--- a/matlab/disp_moments.m
+++ b/matlab/disp_moments.m
@@ -50,7 +50,7 @@ y = y(ivar,options_.drop+1:end)';
 
 ME_present=0;
 if ~all(M_.H==0)
-    if isoctave || matlab_ver_less_than('8.1')
+    if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
         [observable_pos_requested_vars, index_subset, index_observables] = intersect_stable(ivar, options_.varobs_id);
     else
         [observable_pos_requested_vars, index_subset, index_observables] = intersect(ivar, options_.varobs_id, 'stable');
diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m
index 3bcaa538eb61bb36b939075b35d29c850f393fa8..98e6e49f2ac6a00c400107197a661b1965553089 100644
--- a/matlab/disp_th_moments.m
+++ b/matlab/disp_th_moments.m
@@ -55,7 +55,7 @@ oo_.var = oo_.gamma_y{1};
 
 ME_present=0;
 if ~all(diag(M_.H)==0)
-    if isoctave || matlab_ver_less_than('8.1')
+    if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
         [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
     else
         [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');
@@ -105,7 +105,7 @@ if size(stationary_vars, 1) > 0
             lh = cellofchararraymaxlength(M_.endo_names(ivar(stationary_vars)))+2;
             dyntable(options_, title, headers, M_.endo_names(ivar(stationary_vars)), 100*oo_.gamma_y{options_.ar+2}(stationary_vars,:), lh, 8, 2);
             if ME_present
-                if isoctave || matlab_ver_less_than('8.1')
+                if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
                     [stationary_observables, pos_index_subset] = intersect_stable(index_subset, stationary_vars);
                 else
                     [stationary_observables, pos_index_subset] = intersect(index_subset, stationary_vars, 'stable');
diff --git a/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m b/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
index 3e20717df9123274a5912e34b7e33eb5a6999d38..5399e9ca207ee44c784a5ef80dad4a835af4d2ef 100644
--- a/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
+++ b/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
@@ -83,7 +83,7 @@ MaXNumberOfConditionalDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSaved
 
 ME_present=0;
 if ~all(diag(M_.H)==0)
-    if isoctave || matlab_ver_less_than('8.1')
+    if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
         [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
     else
         [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');
diff --git a/matlab/dsge_simulated_theoretical_variance_decomposition.m b/matlab/dsge_simulated_theoretical_variance_decomposition.m
index cc681eed7c13910a4d5b893df0c2a2ceae32a082..4ddd421d6a5d3bacb8215154830cbfdc544d51a2 100644
--- a/matlab/dsge_simulated_theoretical_variance_decomposition.m
+++ b/matlab/dsge_simulated_theoretical_variance_decomposition.m
@@ -86,7 +86,7 @@ MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPer
 
 ME_present=0;
 if ~all(diag(M_.H)==0)
-    if isoctave || matlab_ver_less_than('8.1')
+    if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
         [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
     else
         [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');
diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m
index beb3c1cc0d589ed4e89e53aed1cdf28b53bdf86c..f071f7b8cc2767f671adbe2738972ec7364cb8e4 100644
--- a/matlab/dynare_config.m
+++ b/matlab/dynare_config.m
@@ -92,8 +92,8 @@ if isoctave && octave_ver_less_than('4.4') && ~user_has_octave_forge_package('na
     p{end+1} = '/missing/corrcoef';
 end
 
-%% intersect(…, 'stable') doesn't exist in Octave and in MATLAB < R2013a
-if isoctave || matlab_ver_less_than('8.1')
+%% intersect(…, 'stable') doesn't exist in Octave < 6 and in MATLAB < R2013a
+if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
     p{end+1} = '/missing/intersect_stable';
 end
 
diff --git a/matlab/posterior_analysis.m b/matlab/posterior_analysis.m
index 4d4c50fc3fb5b5056fa9aaa52ac89fcd4f696cfc..d3c680c56e65e07120e2471399201ba4ac9fc600 100644
--- a/matlab/posterior_analysis.m
+++ b/matlab/posterior_analysis.m
@@ -66,7 +66,7 @@ switch type
                                              M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_,options_);
     if ~all(diag(M_.H)==0)
         if strmatch(arg1,options_.varobs,'exact')
-            if isoctave || matlab_ver_less_than('8.1')
+            if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
                 [observable_name_requested_vars,index_subset,index_observables]=intersect_stable(vartan,options_.varobs);
             else
                 [observable_name_requested_vars,index_subset,index_observables]=intersect(vartan,options_.varobs,'stable');
diff --git a/tests/conditional_variance_decomposition/example1.mod b/tests/conditional_variance_decomposition/example1.mod
index e53ea53824776b458206c5d442c9b1fd3dbadd04..04f7be66be2c74d88c04285c6c85960f88e2e7db 100644
--- a/tests/conditional_variance_decomposition/example1.mod
+++ b/tests/conditional_variance_decomposition/example1.mod
@@ -76,7 +76,7 @@ for i=1:nvar
     SubsetOfVariables(i) = i_tmp;
 end
 
-if isoctave || matlab_ver_less_than('8.1')
+if (isoctave && octave_ver_less_than('6')) || (~isoctave && matlab_ver_less_than('8.1'))
     [observable_pos,index_observables,index_subset]=intersect_stable(SubsetOfVariables,options_.varobs_id);
 else
     [observable_pos,index_observables,index_subset]=intersect(SubsetOfVariables,options_.varobs_id,'stable');