Index: /trunk/psModules/src/concepts/pmConceptsStandard.c
===================================================================
--- /trunk/psModules/src/concepts/pmConceptsStandard.c	(revision 11371)
+++ /trunk/psModules/src/concepts/pmConceptsStandard.c	(revision 11372)
@@ -237,11 +237,18 @@
 
     // We choose to write sexagesimal format
-    int big, medium;
-    float small;
-    big = (int)coords;
-    medium = (int)(60.0*(coords - (double)big));
-    small = 3600.0*(coords - (double)big - 60.0 * (double)medium);
+    int big, medium;                    // Degrees and minutes
+    float small;                        // Seconds
+    bool negative = (coords < 0);       // Are we working below zero?
+    coords = fabs(coords);
+    big = (int)abs(coords);
+    coords -= big;
+    medium = 60.0 * coords;
+    coords -= medium / 60.0;
+    small = 3600.0 * coords;
+    if (negative) {
+        big *= -1;
+    }
     psString coordString = NULL;        // String with the coordinates in sexagesimal format
-    psStringAppend(&coordString, "%d:%d:%.2f", big, medium, small);
+    psStringAppend(&coordString, "%d:%02d:%05.2f", big, medium, small);
     psMetadataItem *coordItem = psMetadataItemAllocStr(concept->name, concept->comment, coordString);
     psFree(coordString);
