** SOLVED ** AccelStepper not changing speed whilst running

I’m usually good at finding bugs but think i’m missing something silly or found a limitation of AccelStepper. I’m using AccelStepper to drive a stepper with a DM542 DIR / PUL stepper driver. Running at set speed with no acceleration. Drive and stepper running well using stepper.setSpeed() to set speed and stepper.runSpeed() every loop iteration. Problem I have is that i’m using an encoder input to vary speed via stepper.setSpeed() but although the speed value changes (as shown on display) the stepper motor speed does not change. Any ideas to save my sanity?

// milling machine power feed

// encoder
#include <Encoder.h>
Encoder myEnc(2, 3);
long oldPosition  = 0;
long newPosition;

// stepper
#include <AccelStepper.h>
AccelStepper stepper = AccelStepper(1, 9, 8);
int stepperDefaultSpeed = 500;

int stepperSpeed = stepperDefaultSpeed;

// selector switch
const int forSwitch = 5;
const int revSwitch = 6;
int switchPos = 0; // 0 - OFF, 1 - LEFT, 2 - RIGHT

// 7-seg display
#include <TM1637Display.h>
TM1637Display display(10, 11);

void setup() {
  Serial.begin(9600);

  stepper.setMaxSpeed(2000);
  stepper.setSpeed(0);

  pinMode(forSwitch, INPUT_PULLUP);
  pinMode(revSwitch, INPUT_PULLUP);

  display.setBrightness(6); // set brightness (0-7)

}

void loop() {
  // read 3-position switch and set stepperSpeed accordingly
  getSwitchPos() ;
  if (switchPos == 0) {
    stepper.setSpeed(0);
    stepperSpeed = stepperDefaultSpeed;
    display.showNumberDec(0);
  } else if (switchPos == 1) {
    stepper.setSpeed(stepperSpeed);
    display.showNumberDec(stepperSpeed);
  } else if (switchPos == 2) {
    stepper.setSpeed(stepperSpeed * -1);
    display.showNumberDec(stepperSpeed);
  }

  // read encoder and adjust stepperSpeed accordingly
  newPosition = myEnc.read();
  if (newPosition > oldPosition) {
    stepperSpeed = stepperSpeed + 10;
  }
  if (newPosition < oldPosition) {
    stepperSpeed = stepperSpeed - 10;
  }
  if (stepperSpeed < 200) {
    stepperSpeed = 200;
  }
  oldPosition = newPosition;

  Serial.println(stepper.speed()); // display set stepper.speed for diagnostics
  stepper.runSpeed();

}


void getSwitchPos() {
  if (digitalRead(forSwitch) == 1 && digitalRead(revSwitch) == 1) {
    switchPos = 0;
  }
  if (digitalRead(forSwitch) == 0) {
    switchPos = 1;
  }
  if (digitalRead(revSwitch) == 0) {
    switchPos = 2;
  }
}

Both Serial.begin(9600); and calling TM1637Display.h to update every loop was mucking up the accelStepper timing.
Sanity almost intact!