diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 6eaf33c47064e8a3876668404d2b4b691d726d71..406cee2514d2d94677cbf7bd2e0b04f095ad6bed 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -179,7 +179,8 @@ particle.unscented.alpha = 1;
 particle.unscented.beta = 2;
 particle.unscented.kappa = 1;
 % Configuration of resampling in case of particles
-particle.resampling.status = 'systematic' ;
+particle.resampling.status = 'systematic'; % 'generic'
+particle.resampling.neff_threshold = .5;
 % Choice of the resampling method
 particle.resampling.method1 = 'traditional' ;
 particle.resampling.method2 = 'kitagawa';
diff --git a/matlab/particle/sequential_importance_particle_filter.m b/matlab/particle/sequential_importance_particle_filter.m
index a383632433d95082bd1c4f603f5019fd584e01d6..a7786db20d5960040224cb478b78bad74edb60a5 100644
--- a/matlab/particle/sequential_importance_particle_filter.m
+++ b/matlab/particle/sequential_importance_particle_filter.m
@@ -131,7 +131,7 @@ for t=1:sample_size
     lik(t) = log(mean(wtilde))+dfac;
     weights = wtilde/sum(wtilde);
     Neff = 1/(weights*weights');
-    if (Neff<.5*sample_size && strcmpi(DynareOptions.particle.resampling.status,'generic')) || strcmpi(DynareOptions.particle.resampling.status,'systematic')
+    if (Neff<DynareOptions.particle.resampling.neff_threshold*sample_size && strcmpi(DynareOptions.particle.resampling.status,'generic')) || strcmpi(DynareOptions.particle.resampling.status,'systematic')
         nb_obs_resamp = nb_obs_resamp+1 ;
         StateVectors = tmp(mf0,resample(weights,DynareOptions.particle.resampling.method1,DynareOptions.particle.resampling.method2));
         weights = ones(1,number_of_particles)/number_of_particles ;