--- a/comp/comp_pfilt.m
+++ b/comp/comp_pfilt.m
@@ -19,10 +19,12 @@
 
 l=(0:L-1).'/L;
 
+realoutput = isreal(f) && isfield(g,'h') && isreal(g.h) && g.fc==0;
+
 if isfield(g,'h') && do_time
     % Use a direct algorithm
     g_time=circshift(postpad(g.h,L),g.offset).*...
-           exp(2*pi*1i*round(g.centre*L/2)*l);            
+           exp(2*pi*1i*round(g.fc*L/2)*l);            
     if g.realonly
         g_time=real(g_time);
     end;
@@ -58,5 +60,9 @@
     
 end;
 
+if realoutput
+    h=real(h);
+end;
 
 
+