anchor.diff:  
   typedef struct {
   		Product arxr;
  -		Product arxr;
  -		Product arxr;
  -		Product arxr;
  +		Product arxi;
  +		Product aixr;
  +		Product aixi;
   		Bit#(1) filterPhase;
   		} MulData;
   
  
positive.code: 
     rule work;
        /* compute multiplies */
        Product arxr = fxptMult(ain.a.rel, xin.first.rel);
        Product aixi = fxptMult(ain.a.img, xin.first.img);
        Product arxi = fxptMult(ain.a.rel, xin.first.img);
        Product aixr = fxptMult(ain.a.img, xin.first.rel);
        ain.deq();
        xin.deq();
        ax <= Muldata{arxr: arxr, aixi: aixi, arxi: arxi, aixr: aixr,
  	 filterPhase ain.filterPhase};
        /* combine into outputs */
        yout.enq(ProductData{y: Complex{rel: arxr - aixi, img: arxi + aixr}, filterPhase: muloutphase});
     endrule
  
negative.code:    
  module mkFPCMult(FPCMult)
    provisos(Bits#(CoeffData, a__),
       Bits#(ProductData, b__),
       Bits#(MulData, c__));
     /* input registers */
     FIFOF#(CoeffData) ain <- mkPipelineFIFOF();
     FIFOF#(Complex#(Signal)) xin <- mkPipelineFIFOF();
  