variating an ouput over time

void loop()
   {
   static unsigned long startTime = 0;
   static boolean switchState = LOW;

   if (digitalRead(switchPin) != switchState) {
      startTime = millis();
      switchState = digitalRead(switchPin);
   }

   int maxBrightness = map(analogRead(brightnessPot), 0, 1023, 0 255);
   int maxSeconds = map(analogRead(timePot),0, 1023, 5*60, 25*60);
   int elapsedSeconds = (millis() - startTime) / 1000;

   if (switchState && elapsedSeconds < maxSeconds) {
      // Getting brighter
      analogWrite(outputPin, map(elapsedSeconds, 0, maxSeconds, 0, maxBrightness));
   }

   if (!switchState && elapsedSeconds < maxSeconds) {
     // Getting dimmer
      analogWrite(outputPin, map(elapsedSeconds, 0, maxSeconds, maxBrightness, 0));
   }
}