Stepper running too far

To be used in a stepper controlled rotating table steppers have been tried.
One is a 23HS9430B and the other is a 23HS8430. The driver was bought some year or two ago and they have fallen out of the Ebay orders list. I have the idea that it is some TB66xx type. It 's set for 2.5 Amp. Single step, micro stepping * 4, 8 and 32 has been tested. The common issue for all the stepping rates is overshooting. Using a test factor of 0.7 to the number of steps makes it come close to the target.
The power supply is a 24 volt 17 Amp switched supply.
The speer also move in a jerky, rattling way. Varying the stepper puls rate make no difference.
Fiddling with steppers for a few years this behaviour has never been seen.

The controller is an UNO supplied via USB. No common GND for Vcc resp. the 24V motor pwr.
what am I missing? Anybody having new ideas to try?

Test code below:

//#include <Stepper.h>

#define Low 0
#define High 1023
#define fwd HIGH
#define bwd LOW
#define motorX 1
#define motorY 2
#define motorZ 3

void setup()
{
  Serial.begin(115200);
  Serial.println("NEMA 23 3.0 Nm test 201110");
  delay(5000);//Show program name
  pinMode(2, OUTPUT); //can be used as x-step
  pinMode(5, OUTPUT); //can be used as x-dir
  pinMode(8, OUTPUT); //enable active low
  pinMode(13, OUTPUT);
}

void stepmotor(int, int);

void stepmotor(int (motor), int(dir))
{
  int adir;
  unsigned long start;
  start = millis();
  //  Serial.print("Dir: ");Serial.println(dir);
  digitalWrite(8, LOW);//enable motorpower
  if ( dir == fwd )
  {
    adir = High;
    Serial.println("Forward");
  }
  else
  {
    adir = Low;
    Serial.println("Backward");
  }
  //Serial.print("Start :"); Serial.println(millis());
  for (unsigned int count = 0; count < 800 * 37 / 50; count++)
    //for (unsigned long count = 0; count < 6400ul * 7ul / 10ul; count++)
    //  for (unsigned long count = 0; count < 6400ul * 56ul / 80ul; count++)
    //  for (unsigned long count = 0; count < 6400ul * 2ul / 3ul; count++)
  {
    if (motor == motorX )
    {
      digitalWrite( 5, dir);//digital dir does not owerride analoWrite(5, dir)
      digitalWrite( 2, HIGH);// digital x-step
      delayMicroseconds(10);
      digitalWrite( 2, LOW);// digital x-step
      delayMicroseconds(2990);
    }
    if (motor == motorY)
    {
      digitalWrite( 6, dir);
      digitalWrite( 3, LOW);
      digitalWrite( 3, HIGH);
      delay(5);
    }
    if (motor == motorZ)
    {
      digitalWrite( 7, dir);
      digitalWrite( 4, LOW);
      digitalWrite( 4, HIGH);
      delay(5);
    }
  }
  Serial.print("Stopp :"); Serial.println(millis() - start);
  //  digitalWrite(8, HIGH);//disable motorpower

}
void loop() {
  // put you()r main code here, to run repeatedly:

  //  analogWrite( 0, Low);//tst
  //  analogWrite( 1, Low);//tst
  //  analogWrite( 2, Low);// x-step analog KLAR
  //  analogWrite( 3, Low);// y-step analog KLAR
  //  analogWrite( 4, Low);// z-step analog¨KLAR
  //  analogWrite( 5, Low);// x-dir  analog KLAR
  //  digitalWrite(2, LOW);// x-step digitalt
  //  digitalWrite(3, LOW);// y-step digitalt
  //  digitalWrite(4, LOW);// z-step digitalt
  //  digitalWrite(5,LOW); // x-dir digitalt
  //  digitalWrite(6,HIGH);// y-dir KLAR HIGH == CW LOW == CCW
  //  digitalWrite(7,HIGH);// z-dir KLAR HIGH == CW LOW == CCW KLAR
  //  digitalWrite(8,LOW);//
  //  digitalWrite(9,LOW);//
  //  digitalWrite(10,LOW);//
  //  digitalWrite(11,LOW);//
  //  digitalWrite(12,LOW);
  stepmotor( motorX, fwd );
  //  pulse (motorY, fwd );
  //  pulse (motorZ, fwd );
  digitalWrite(13, LOW);
  delay(4000);

  //  analogWrite( 0, High);//
  //  analogWrite( 1, High);//
  //  analogWrite( 2, High);//x-channel KLAR
  //  analogWrite( 3, High);//y-channel KLAR
  //  analogWrite( 4, High);//z-channel KLAR
  //  analogWrite( 5, High);//x-dir     KLAR
  //  digitalWrite(2, HIGH); //x-step!!!
  //  digitalWrite(3, HIGH); //y-step!!!
  //  digitalWrite(4, HIGH); //z-step!!!
  //  digitalWrite(5, HIGH); //X-DIR CW ON HIGH CCW ON LOW
  //  digitalWrite(6, HIGH); //Y-DIR CW ON HIGH CCW ON LOW KLAR
  //  digitalWrite(7, LOW); //Z-DIR CW ON HIGH, CCW ON LOW KLAR
  //  digitalWrite(8,HIGH);//
  //  digitalWrite(9,HIGH);//
  //  digitalWrite(10,HIGH);//
  //  digitalWrite(11,HIGH);//
  //  digitalWrite(12,HIGH);//
  stepmotor( motorX, bwd );// går finfint +200, -200 steg
  //  pulse (motorY, bwd );
  //  pulse (motorZ, bwd );
  digitalWrite(13, HIGH); //

  delay(4000);

}

But do you have common GND between Arduino and Driver?

Already tried the AccelStepper library?

Oh, yes! Else PUL and DIR would need to go by radio.

No, not yet. That will be used in the sharp application. An old motor test code has been used, as posted.

Does it include to hold the motor in place after stepping?
Stepper test should be done without a load - how do you know about overshoot?

Did you adjust the steps per revolution (degrees per step) factor?

Not during this test. The empty axle has a aluminum half coupling clamped to it. This run is without load.

Issuing 200 steps in single step, 800 in micro*4 etc the axle should turn exactly one rev but turns some 30% more!

This code was used to try to achieve just one rev, 360 degrees of rotation, not 450 degrees something..

A solution was found. Replacing the beaten up 24V Banggood supply to a well known and used 12V Banggood suply solved the issue.