Rabbit 3000 register setting error

I’ve seen some inexplicable behavior from our rabbit processors.

I first setup the two I/O pins I want to control.

BitWrPortI(PEDDR, &PEDDRShadow, 1, 4);  
BitWrPortI(PEFR, &PEFRShadow, 0, 4);
BitWrPortI(PECR, &PECRShadow, 0, 4);

BitWrPortI(PEDDR, &PEDDRShadow, 1, 2);
BitWrPortI(PEFR, &PEFRShadow, 0, 2);
BitWrPortI(PECR, &PECRShadow, 0, 2);

Then, stepping past the following line of code, only the state of PE4 should chnage, but it is also changing the state of PE2. Why?

BitWrPortI(PEDR, &PEDRShadow, 1, 4);

Try running this code on a rabbit and watch the pin states of PE2 and PE4 with an O-scope. This appears to be a bug. Does this bug show up in an errata somewhere? Do you have any suggestions?

BitWrPortI(PEDDR, &PEDDRShadow, 1, 4);  
BitWrPortI(PEFR, &PEFRShadow, 0, 4);
BitWrPortI(PECR, &PECRShadow, 0, 4);

BitWrPortI(PEDDR, &PEDDRShadow, 1, 2);
BitWrPortI(PEFR, &PEFRShadow, 0, 2);
BitWrPortI(PECR, &PECRShadow, 0, 2);

BitWrPortI(PEDR, &PEDRShadow, 0, 4);
BitWrPortI(PEDR, &PEDRShadow, 1, 4);
BitWrPortI(PEDR, &PEDRShadow, 0, 4);
BitWrPortI(PEDR, &PEDRShadow, 1, 4);

BitWrPortI(PEDR,&PEDRShadow,0,2);
BitWrPortI(PEDR,&PEDRShadow,1,2);

BitWrPortI(PEDR, &PEDRShadow, 1, 4);

BitWrPortI(PEDR,&PEDRShadow,0,2);
BitWrPortI(P:(EDR,&PEDRShadow,1,2);
BitWrPortI(PEDR,&PEDRShadow,0,2);

I appreciate any help you can offer.

Best Regards,

Steve