Problem with 2 decimal places/2 significant figures
You're talking about the output from this line?

Serial.println( (String) "DATA,DATE,TIME," +flat+ "");


drop the use of the String class and make that two separate print statements.  Then you can use the second argument to print to define the precision.

Serial.print("DATA,DATE,TIME,");
Serial.println(flat, 6);


That gets the same end result output going out the serial line, but lets you specify the precision and avoids the nasty String class.