anchor.diff:        end
         last_readData <= cycle_cnt;
         if (verbose) $display("mkMemReadInternal::read_data cyclediff %d", cycle_cnt-last_readData);
  -      clientBurstLen.upd(truncate(response.tag), burstLen-1);
  -      firstReg <= last;
  -      lastReg  <= burstLen-1 == 1;
  +      clientBurstLen.upd(truncate(response.tag), tuple2((burstLen-1 == 1),burstLen-1));
  +      firstReg <= response.last;
      endrule
   
      rule tag_completed;
  
positive.code:       let response <- toGet(serverData).get();
        let drq <- serverProcessing.portA.response.get;
        let tag = drq.req_tag;
        let burstLen = clientBurstLen.sub(truncate(response.tag));
        let first   = firstReg;
        let last    = response.last;
        if (first) begin
  	 last = drq.last;
  	 dynamicAssert(last == (burstLen==1), "Last incorrect");
        end
        if (last && burstLen != 1)
  
negative.code:    
     let verbose = False;
     
     RegFile#(Bit#(TLog#(numTags)),Tuple2#(Bool,Bit#(BurstLenSize))) clientBurstLen <- mkRegFileFull();
     Reg#(Bit#(BurstLenSize)) burstReg <- mkReg(0);
     Reg#(Bool)               firstReg <- mkReg(True);
           
     Reg#(Bit#(32))  beatCount <- mkReg(0);
     let beat_shift = fromInteger(valueOf(beatShift));
  