My delay is not what I set it too be (it's random and not even close) [CODE]

What does this output?

 Serial.print(millis() - start);        // check on performance in milliseconds

The problem might be that your loop takes a lot of time to run.