--- a/fourier/blfilter.m
+++ b/fourier/blfilter.m
@@ -1,4 +1,4 @@
-function g=blfilter(name,fsupp,varargin)
+function gout=blfilter(name,fsupp,varargin)
 %BLFILTER  Construct a band-limited filter
 %   Usage:  g=blfilter(name,fsupp,centre);
 %           g=blfilter(name,fsupp,centre,...);
@@ -11,6 +11,12 @@
 %
 %   `blfilter(name,fsupp,centre)` constructs a filter with a centre
 %   frequency of *centre* measured in normalized frequencies.
+%
+%   If one of the inputs is a vector, the output will be a cell array
+%   with one entry in the cell array for each element in the vector. If
+%   more input are vectors, they must have the same size and shape and the
+%   the filters will be generated by stepping through the vectors. This
+%   is a quick way to create filters for |filterbank| and |ufilterbank|.
 %
 %   `blfilter` accepts the following optional parameters:
 %
@@ -45,6 +51,8 @@
 
 [flags,kv]=ltfatarghelper({'centre'},definput,varargin);
 
+[fsupp,kv.centre,kv.delay]=scalardistribute(fsupp,kv.centre,kv.delay);
+
 if ~isempty(kv.fs)
     fsupp=fsupp/kv.fs*2;
     kv.centre=kv.centre/kv.fs*2;
@@ -53,8 +61,18 @@
 % Sanitize
 kv.centre=modcent(kv.centre,2);
 
-g.H=@(L)    fftshift(firwin(name,round(L/2*fsupp),flags.norm));
-g.foff=@(L) round(L/2*kv.centre)-floor(round(L/2*fsupp)/2);
-g.realonly=flags.do_real;
-g.delay=kv.delay;
-g.fs=kv.fs;
+Nfilt=numel(fsupp);
+gout=cell(1,Nfilt);
+for ii=1:Nfilt
+    g=struct();
+    g.H=@(L)    fftshift(firwin(name,round(L/2*fsupp(ii)),flags.norm));
+    g.foff=@(L) round(L/2*kv.centre(ii))-floor(round(L/2*fsupp(ii))/2);
+    g.realonly=flags.do_real;
+    g.delay=kv.delay(ii);
+    g.fs=kv.fs;
+    gout{ii}=g;
+end;
+
+if Nfilt==1
+    gout=g;
+end;