GPS can't read

 while (millis() - start < 1000) 
  {  
    if (feedgps())
      newdata = true;
  }
  if (newdata) {
    gpsdump(gps);
  }

More rubbish. Doing nothing but reading serial data for one second, and assuming that that somehow means that you got exactly one sentence is a poor assumption.