diff --git a/doc/dynare.texi b/doc/dynare.texi
index 6627a2a3eb8c8430afa444cd1d530e5d68ad8ca2..b0db04b3620669e04c24e560f2c3cba12076baf5 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -2828,8 +2828,8 @@ Order of autocorrelation coefficients to compute and to print. Default: @code{5}
 Number of points dropped at the beginning of simulation before
 computing the summary statistics. Default: @code{100}.
 
-@item hp_filter = @var{INTEGER}
-Uses HP filter with @math{\lambda} = @var{INTEGER} before computing
+@item hp_filter = @var{DOUBLE}
+Uses HP filter with @math{\lambda} = @var{DOUBLE} before computing
 moments. Default: no filter.
 
 @item hp_ngrid = @var{INTEGER}
diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m
index 0ea0f1ebc47c69c24422364e39886084132521c5..add1dc9f2ad200f28403bb85143e44442b553e71 100644
--- a/matlab/disp_moments.m
+++ b/matlab/disp_moments.m
@@ -60,7 +60,7 @@ if options_.nomoments == 0
     title='MOMENTS OF SIMULATED VARIABLES';
     if options_.hp_filter
         title = [title ' (HP filter, lambda = ' ...
-                 int2str(options_.hp_filter) ')'];
+                 num2str(options_.hp_filter) ')'];
     end
     headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE','SKEWNESS', ...
                  'KURTOSIS');
@@ -73,7 +73,7 @@ if options_.nocorr == 0
         title = 'CORRELATION OF SIMULATED VARIABLES';
         if options_.hp_filter
             title = [title ' (HP filter, lambda = ' ...
-                     int2str(options_.hp_filter) ')'];
+                     num2str(options_.hp_filter) ')'];
         end
         headers = char('VARIABLE',M_.endo_names(ivar,:));
         dyntable(title,headers,labels,corr,size(labels,2)+2,8,4);
@@ -93,7 +93,7 @@ if ar > 0
         title = 'AUTOCORRELATION OF SIMULATED VARIABLES';
         if options_.hp_filter
             title = [title ' (HP filter, lambda = ' ...
-                     int2str(options_.hp_filter) ')'];
+                     num2str(options_.hp_filter) ')'];
         end
         headers = char('VARIABLE',int2str([1:ar]'));
         dyntable(title,headers,labels,autocorr,size(labels,2)+2,8,4);
diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m
index 2c990c477536807edd3a92fdb05333f991906791..66f210740f61aa7a7bda5011a46bf5e42fdd8ff1 100644
--- a/matlab/disp_th_moments.m
+++ b/matlab/disp_th_moments.m
@@ -53,7 +53,7 @@ oo_.var = oo_.gamma_y{1};
 if ~options_.noprint %options_.nomoments == 0
     title='THEORETICAL MOMENTS';
     if options_.hp_filter
-        title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
+        title = [title ' (HP filter, lambda = ' num2str(options_.hp_filter) ')'];
     end
     headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE');
     labels = deblank(M_.endo_names(ivar,:));
@@ -64,7 +64,7 @@ if ~options_.noprint %options_.nomoments == 0
         title='VARIANCE DECOMPOSITION (in percent)';
         if options_.hp_filter
             title = [title ' (HP filter, lambda = ' ...
-                     int2str(options_.hp_filter) ')'];
+                     num2str(options_.hp_filter) ')'];
         end
         headers = M_.exo_names;
         headers(M_.exo_names_orig_ord,:) = headers;
@@ -95,7 +95,7 @@ if options_.nocorr == 0 && size(stationary_vars, 1) > 0
         disp(' ')
         title='MATRIX OF CORRELATIONS';
         if options_.hp_filter
-            title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
+            title = [title ' (HP filter, lambda = ' num2str(options_.hp_filter) ')'];
         end
         labels = deblank(M_.endo_names(ivar(i1),:));
         headers = char('Variables',labels);
@@ -113,7 +113,7 @@ if options_.ar > 0 && size(stationary_vars, 1) > 0
         disp(' ')    
         title='COEFFICIENTS OF AUTOCORRELATION';      
         if options_.hp_filter        
-            title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];      
+            title = [title ' (HP filter, lambda = ' num2str(options_.hp_filter) ')'];      
         end      
         labels = deblank(M_.endo_names(ivar(i1),:));      
         headers = char('Order ',int2str([1:options_.ar]'));
diff --git a/matlab/sample_hp_filter.m b/matlab/sample_hp_filter.m
index 24f61da83a7b4c2ffe56fbddb51b6de008de157d..2dbae51fa4bec113bb483ba04eea7a6eafcb1892 100644
--- a/matlab/sample_hp_filter.m
+++ b/matlab/sample_hp_filter.m
@@ -3,7 +3,7 @@ function [hptrend,hpcycle] = sample_hp_filter(y,s)
 % 
 % INPUTS 
 %   y                        [double]   T*n matrix of data (n is the number of variables)
-%   s                        [integer]  scalar, smoothing parameter.
+%   s                        [double]   scalar, smoothing parameter.
 % 
 % OUTPUTS 
 %   hptrend                  [double]   T*n matrix, trend component of y.
diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index adaa2b624ab566b0b9f70a0c0f2242d1322c2f86..616f39a047116591a0657642b83d4fa3f013caab 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -1833,7 +1833,7 @@ o_nofunctions : NOFUNCTIONS { driver.option_num("nofunctions", "1"); };
 o_nomoments : NOMOMENTS { driver.option_num("nomoments", "1"); };
 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 INT_NUMBER { driver.option_num("hp_filter", $3); };
+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_periods : PERIODS EQUAL INT_NUMBER { driver.option_num("periods", $3); };
 o_cutoff : CUTOFF EQUAL non_negative_number { driver.cutoff($3); }