loops

You're using 'lastRun' to check the elapsed time. Remember this line:  if (millis() - lastRun > 150) {
That is where it gets used. You're taking the current elapsed time from millis(), subtracting lastRun and seeing if the result is bigger than '150'. So 'lastRun' must be set each time a loop runs. Otherwise it will never reset.