diff --git a/doc/dynare.texi b/doc/dynare.texi
index b50e6dd735aa0650c667e1a9d98eca37dd1a9e7c..0c36e2f2c81af415abb187b625a78e053de14fe8 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -2798,8 +2798,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 85376ec7e1996703d429fdf1958f44e269817358..3b454ee288b822583b108c873a1db5baf6dfe843 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -1650,7 +1650,7 @@ o_nocorr : NOCORR { driver.option_num("nocorr", "1"); };
 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_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); }