Latitude and Longitude DMS conversion in MPLAB XC8
You haven't explicitly stated anywhere in the question what the input and output formats are so I'm guessing a little.

And I'm not sure why you seem to have over complicated it so much. You certainly have far more variables and string copies than you need. Assuming you have NMEA format values coming in then all you need is:

// lon_data = NMEA format string DDDMM.mmmmm
// lon_return = DDMMSS.sss
void lon_DMS(const char *lon_data, char *lon_return)
{
  float workingValue = atof(lon_data);
  int degrees = workingValue/100;
  workingValue = workingValue - degrees *100; // minutes only
  int minutes = (int) workingValue;
  workingValue = 60*(workingValue - minutes); // seconds
  sprintf(lon_return ,"%03d%02d%06.3f", degrees, minutes, workingValue);
}