millis() blink != 50/50

runaway_pancake:
I get 50ms ON time and 950ms OFF time.
Since I start with LED13state = true in the first place, I expected the opposite, that my ON time would be 950 and the OFF 50.

You have:

 if (LED13state == true)
  {
    digitalWrite(13, LED13state);  // D13 = 1 (true)?
    if (millis() >= waitUntil)
      {
        LED13state = !LED13state; // LED13state = true
        waitUntil = millis() + 950;
      } 
  }

So once it is ON, you then set it up to wait until time is up (ie. 50mS) then turn it off and wait for 950 mS.

Maybe toggle the boolean, then set the pin. In fact, who needs variables?

void loop()
{
  if (digitalRead (13) == HIGH)
  {
    if (millis() >= waitUntil)
      {
        digitalWrite(13, LOW);  
        waitUntil = millis() + 50;  // off for 50 mS
      } 
  }
  else
  { 
    if (millis() >= waitUntil)
      {
        digitalWrite(13, HIGH); 
        waitUntil = millis() + 950;  // on for 950 mS
      }
  }
} // end ofloop

Also, this won't work when millis wraps around. Better to do a subtraction:

unsigned long waitUntil;
unsigned long startTime;

void loop()
{
  if (millis() - startTime >= waitUntil)
    {
     if (digitalRead (13) == HIGH)
     {
      digitalWrite(13, LOW);  
      startTime = millis ();
      waitUntil = 50;  // off for 50 mS
     }
    else
     { 
      digitalWrite(13, HIGH); 
      startTime = millis ();
      waitUntil = 950;  // on for 950 mS
     }
  }  // end if time up
} // end ofloop