diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 456d0a996ddfa260849ca4f8a8b6d21952bdaec0..c42edf4167d8506a312ba43d54b36c1655279fa3 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -152,6 +152,7 @@ options_.impulse_responses.plot_threshold=1e-10;
 options_.relative_irf = 0;
 options_.ar = 5;
 options_.hp_filter = 0;
+options_.one_sided_hp_filter = 1600;
 options_.hp_ngrid = 512;
 options_.nodecomposition = 0;
 options_.nomoments = 0;
diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index 58246993da21646c412b13a710d0cc4ccc420613..789286082badd65e88233908af70c4f61dd4895c 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -97,7 +97,7 @@ class ParsingDriver;
 %token DEFAULT FIXED_POINT OPT_ALGO
 %token FORECAST K_ORDER_SOLVER INSTRUMENTS SHIFT MEAN STDEV VARIANCE MODE INTERVAL SHAPE DOMAINN
 %token GAMMA_PDF GRAPH GRAPH_FORMAT CONDITIONAL_VARIANCE_DECOMPOSITION NOCHECK STD
-%token HISTVAL HISTVAL_FILE HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HOMOTOPY_FORCE_CONTINUE HP_FILTER HP_NGRID HYBRID
+%token HISTVAL HISTVAL_FILE HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HOMOTOPY_FORCE_CONTINUE HP_FILTER HP_NGRID HYBRID ONE_SIDED_HP_FILTER
 %token IDENTIFICATION INF_CONSTANT INITVAL INITVAL_FILE BOUNDS JSCALE INIT INFILE INVARS
 %token <string_val> INT_NUMBER
 %token INV_GAMMA_PDF INV_GAMMA1_PDF INV_GAMMA2_PDF IRF IRF_SHOCKS IRF_PLOT_THRESHOLD IRF_CALIBRATION
@@ -1107,6 +1107,7 @@ stoch_simul_options : stoch_simul_primary_options
                     | o_nodecomposition
                     | o_spectral_density
                     | o_bandpass_filter
+                    | o_one_sided_hp_filter
                     ;
 
 symbol_list : symbol_list symbol
@@ -2573,6 +2574,7 @@ o_irf : IRF EQUAL INT_NUMBER { driver.option_num("irf", $3); };
 o_irf_shocks : IRF_SHOCKS EQUAL '(' symbol_list ')' { driver.option_symbol_list("irf_shocks"); };
 o_hp_filter : HP_FILTER EQUAL non_negative_number { driver.option_num("hp_filter", $3); };
 o_hp_ngrid : HP_NGRID EQUAL INT_NUMBER { driver.option_num("hp_ngrid", $3); };
+o_one_sided_hp_filter : ONE_SIDED_HP_FILTER EQUAL non_negative_number { driver.option_num("one_sided_hp_filter", $3); };
 o_periods : PERIODS EQUAL INT_NUMBER { driver.option_num("periods", $3); };
 o_solver_periods : SOLVER_PERIODS EQUAL INT_NUMBER { driver.option_num("ep.periods", $3); };
 o_extended_path_order : ORDER EQUAL INT_NUMBER { driver.option_num("ep.stochastic.order", $3); };
diff --git a/preprocessor/DynareFlex.ll b/preprocessor/DynareFlex.ll
index 3ab5af7574af5188f5892e5f9b8627d209527a10..81bcf01225c60fc67e0585efccbc03f7ea51dadf 100644
--- a/preprocessor/DynareFlex.ll
+++ b/preprocessor/DynareFlex.ll
@@ -637,6 +637,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
 <DYNARE_STATEMENT>irf {return token::IRF;}
 <DYNARE_STATEMENT>irf_shocks {return token::IRF_SHOCKS;}
 <DYNARE_STATEMENT>hp_filter {return token::HP_FILTER;}
+<DYNARE_STATEMENT>one_sided_hp_filter {return token::ONE_SIDED_HP_FILTER;}
 <DYNARE_STATEMENT>bandpass_filter {return token::BANDPASS_FILTER;}
 <DYNARE_STATEMENT>hp_ngrid {return token::HP_NGRID;}
 <DYNARE_STATEMENT>simul_seed {return token::SIMUL_SEED;}