Rotary encoder problems

Hi

I have this SpinTrak http://www.ultimarc.com/SpinTrak.htm

With brown to +5v, white to ground, green pin 8, yellow pin 9.

I can't seem to get any sensible reading from it. I am using the code from the playground, looks like this:

int encoderPinOne = 8;
int encoderPinTwo = 9;
int encoderPos = 0;

void setup() {

  pinMode(encoderPinOne, INPUT); 
  pinMode(encoderPinTwo, INPUT);

  // attach interrups
  PCattachInterrupt(8, doEncoderPinOne, CHANGE);
  PCattachInterrupt(9, doEncoderPinTwo, CHANGE);  

  Serial.begin (9600);

}

void loop(){
  Serial.println(encoderPos);
}

void doEncoderPinOne(){
  
  int valOne = digitalRead(encoderPinOne);
  int valTwo = digitalRead(encoderPinTwo);

  // look for a low-to-high on channel A
  if (valOne == HIGH) { 

    // check channel B to see which way encoder is turning
    if (valTwo == LOW) {  
      encoderPos = encoderPos + 1;         // CW
      //Serial.println(1);
    } 
    else {
      encoderPos = encoderPos - 1;         // CCW
      //Serial.println(2);
    }
    
  }else   // must be a high-to-low edge on channel A                                       
  { 
    // check channel B to see which way encoder is turning  
    if (valTwo == HIGH) {   
      encoderPos = encoderPos + 1;          // CW
      //Serial.println(3);
    }else{
      encoderPos = encoderPos - 1;          // CCW
      //Serial.println(4);
    }
  }
  //Serial.println (encoder0Pos);//, DEC);          
  // use for debugging - remember to comment out

}

void doEncoderPinTwo(){

  int valOne = digitalRead(encoderPinOne);
  int valTwo = digitalRead(encoderPinTwo);
    
  // look for a low-to-high on channel B
  if (valTwo == HIGH) {   

   // check channel A to see which way encoder is turning
    if (valOne == HIGH) {  
      encoderPos = encoderPos + 1;         // CW
      //Serial.println(5);
    } 
    else {
      encoderPos = encoderPos - 1;         // CCW
      //Serial.println(6);
    }
  }

  // Look for a high-to-low on channel B

  else { 
    // check channel B to see which way encoder is turning  
    if (valOne == LOW) {   
      encoderPos = encoderPos + 1;          // CW
      //Serial.println(7);
    } 
    else {
      encoderPos = encoderPos - 1;          // CCW
      //Serial.println(8);
    }
  }

}

It is telling me the encoderPos is always zero. When I do the print serial statements within each function, I get back these messages

doEncoderPinOne shows 4 & 2 doEncoderPinTwo shows 5 & 7

2 = high, high 4 = high, low 5 = high, high 7 = low, low

If anyone has any ideas they would be really appreciated.

Thanks