/* FIR filter with end padding using CONV or FFT */
firflt(s, f, pad)
{
local out, padlen;
/* FIR filter the data with end padding */
if (length(f) > setbufsize)
{
/* filter length > series buffer size, so use FFT's */
out = fpadfilt(s, f, pad);
}
else
{
/* direct convolution */
out = padfilt(s, f, pad);
}
setxoffset(out, xoffset(s));
return(out);
}