Pulse and time counter - spurious results

this was code I implemented some time ago to measure the phase difference between two pulses - it was running on an ESP32 but should work on any fast microcontroller

// ESP32 - measure pulse width and and phase difference between two pulses

// updated for Arduino ESP32 core 3.0 see
// https://docs.espressif.com/projects/arduino-esp32/en/latest/api/timer.html

// note using hw_timer_t or micros() give similar values
hw_timer_t *Timer1_Cfg = NULL;  // timer object

// pulse timing data
volatile uint32_t riseTime16, period, phaseTime;
// rising edge interrupt calculate period uSec
void IRAM_ATTR rising16() {
  uint32_t rise = micros();
  period = rise - riseTime16;
  riseTime16 = rise;
}

// falling edge interrupt calculate pulse width uSec
void IRAM_ATTR rising17() {
  phaseTime = micros() - riseTime16;
}

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.printf("\n\nESP32 measure pins 16 and 17 pulse information \n");
  //Timer1_Cfg = timerBegin(0, 80, true);           // API 2.x setup timer for 1uSec
  if ((Timer1_Cfg = timerBegin(10000000)) == NULL)  // API 3.0 setup timer for 1uSec
    Serial.println("timerBegin Failed!!");
  Serial.print("timerBegin() OK frequenmcy ");
  Serial.println(timerGetFrequency(Timer1_Cfg));
  //  setup interrput routines - connect signal to pins 16 and 17
  attachInterrupt(digitalPinToGPIONumber(16), rising16, RISING);    // detect rising edge on pin 16
  attachInterrupt(digitalPinToGPIONumber(17), rising17, RISING);  // detect falling edge on pin 17
  Serial.println("displaying results");
}

void loop() {
  static unsigned long int timer = millis();
  // if 2 seconds have elapsed since last redaing print results
  if (millis() - timer > 2000) {
    timer += 2000;
    Serial.printf("period %lduSec frequency %.2fHz phaseTime = %lduSec phase difference %.1f \n",
                  period, 1000000.0/period, phaseTime, 360.0*phaseTime/period);
  }
}

serial output 100Hz 50degree phase difference

period 9999uSec frequency 100.01Hz phaseTime = 1389uSec phase difference 50.0
period 10000uSec frequency 100.00Hz phaseTime = 1387uSec phase difference 49.9
period 10000uSec frequency 100.00Hz phaseTime = 1388uSec phase difference 50.0
period 10000uSec frequency 100.00Hz phaseTime = 1389uSec phase difference 50.0
period 10000uSec frequency 100.00Hz phaseTime = 1388uSec phase difference 50.0
period 10000uSec frequency 100.00Hz phaseTime = 1389uSec phase difference 50.0
period 10000uSec frequency 100.00Hz phaseTime = 1389uSec phase difference 50.0 ```
oscilloscope display

100Hz 120degree phase difference

period 10000uSec frequency 100.00Hz phaseTime = 3334uSec phase difference 120.0 
period 10001uSec frequency 99.99Hz phaseTime = 3334uSec phase difference 120.0 
period 10000uSec frequency 100.00Hz phaseTime = 3334uSec phase difference 120.0 
period 10000uSec frequency 100.00Hz phaseTime = 3333uSec phase difference 120.0 
period 10000uSec frequency 100.00Hz phaseTime = 3330uSec phase difference 119.9 
period 10000uSec frequency 100.00Hz phaseTime = 3334uSec phase difference 120.0 
period 10000uSec frequency 100.00Hz phaseTime = 3332uSec phase difference 120.0 
period 10000uSec frequency 100.00Hz phaseTime = 3334uSec phase difference 120.0