In format(), consider sign only after grouping.
Suggested by Kevin Jacobs in bug report #129417.
diff --git a/Lib/locale.py b/Lib/locale.py
index 401c712..ac272e7 100644
--- a/Lib/locale.py
+++ b/Lib/locale.py
@@ -115,17 +115,22 @@
     """Formats a value in the same way that the % formatting would use,
     but takes the current locale into account.
     Grouping is applied if the third parameter is true."""
-    result = f % val
-    fields = string.split(result, ".")
+    result = f % abs(val)
+    fields = result.split(".")
     if grouping:
         fields[0]=_group(fields[0])
     if len(fields)==2:
-        return fields[0]+localeconv()['decimal_point']+fields[1]
+        res = fields[0]+localeconv()['decimal_point']+fields[1]
     elif len(fields)==1:
-        return fields[0]
+        res = fields[0]
     else:
         raise Error, "Too many decimal points in result string"
 
+    if val < 0:
+        return '-'+res
+    else:
+        return res
+
 def str(val):
     """Convert float to integer, taking the locale into account."""
     return format("%.12g",val)