Data Logging Stops After Losing GPS Signal

This is the beginning of the loop, the part that controls the GPS functions.

void loop()
{
  
  //LED Condition
  sentences = (gps.sentencesWithFix());
  //Digital Inputs
  durationHigh = pulseIn(PulsePin, HIGH , 500000);
  durationLow = pulseIn(PulsePin, LOW, 500000);
  
  timer = millis();
  
  //Analog Inputs
  FanTemp = analogRead(0);
  AirTemp = analogRead(1);
  value_x = analogRead(2);
  value_y = analogRead(3);
  value_z = analogRead(4);
 
  //Acceleration Manipulation
  xv = (value_x/analog_resolution*ADC_ref-zero_x)/sensitivity_x;
  yv = (value_y/analog_resolution*ADC_ref-zero_y)/sensitivity_y;
  zv = (value_z/analog_resolution*ADC_ref-zero_z)/sensitivity_z;
  
  //Tilt Angle
  angle_x = atan2(-yv,-zv)*RAD_TO_DEG;
  angle_y = atan2(-xv,-zv)*RAD_TO_DEG;
  angle_z = atan2(-yv,-xv)*RAD_TO_DEG;
  
  //GPS
    while (Serial3.available() > 0)
  {
   gps.encode(Serial3.read());
  }
  
  if (gps.location.isUpdated())
  {
  latitude = (gps.location.lat() , 8);
  longitude = (gps.location.lng(), 8);
  }
  
  else if (gps.speed.isUpdated())
  {
    vel = (gps.speed.mph());
  }
  
  else if (gps.time.isUpdated())
  {
  hourdata =(gps.time.hour());
  mindata = (gps.time.minute());
  secdata = (gps.time.second());
  }

else if (gps.date.isUpdated());
{
  monthdata = (gps.date.month());
  daydata = (gps.date.day());
}