Quadrature Encoder signal not quite 180 degrees apart?

HI, I’m using an Arduino Uno with an Optical Rotary Encoder. The encoder triggers an interrupt using the CHANGE parameter.

 attachInterrupt(0,  encoderInterupt, CHANGE);

I thought ‘Change’ would trigger a pulse exactly every 180° of the encoder cycle but my attached graph image seems to suggest one is firing too early/late. The gap difference is only +/-20 micro seconds but it is enough to mess up my plans.

Is the normal accuracy? Or am I doing something wrong?

The encoder I am using: Rotary Encoder - 1024 P/R (Quadrature) - COM-11102 - SparkFun Electronics

The interupt code:

void encoderInterupt()
{
  if(segCounter < segCountMax) 
  {
     segArray[segCounter] = micros();
     segCounter++;
  } 
  pos++;
}

What are you actually graphing there ?

It says it is supposed to be 1024 pulses per revolution.

I am measuring radial acceleration. Yes 1024 if I use RISING or FALLING. CHANGE (either RISING or FALLING) should return 2048 ppr.