diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigImplUtil.java b/config/src/main/java/com/typesafe/config/impl/ConfigImplUtil.java
index 5ea65537..fde0341d 100644
--- a/config/src/main/java/com/typesafe/config/impl/ConfigImplUtil.java
+++ b/config/src/main/java/com/typesafe/config/impl/ConfigImplUtil.java
@@ -78,8 +78,10 @@ final public class ConfigImplUtil {
         if (s.length() == 0)
             return renderJsonString(s);
 
+        // if it starts with a hyphen or number, we have to quote
+        // to ensure we end up with a string and not a number
         int first = s.codePointAt(0);
-        if (Character.isDigit(first))
+        if (Character.isDigit(first) || first == '-')
             return renderJsonString(s);
 
         if (s.startsWith("include") || s.startsWith("true") || s.startsWith("false")
@@ -89,7 +91,7 @@ final public class ConfigImplUtil {
         // only unquote if it's pure alphanumeric
         for (int i = 0; i < s.length(); ++i) {
             char c = s.charAt(i);
-            if (!(Character.isLetter(c) || Character.isDigit(c)))
+            if (!(Character.isLetter(c) || Character.isDigit(c) || c == '-'))
                 return renderJsonString(s);
         }
 
diff --git a/config/src/test/resources/test11.conf b/config/src/test/resources/test11.conf
new file mode 100644
index 00000000..d876dfc6
--- /dev/null
+++ b/config/src/test/resources/test11.conf
@@ -0,0 +1,7 @@
+// this checks quoting of strings that could be numbers, when we render
+
+"10" = "42"
+"-10" = "-42"
+foo-bar = bar-baz
+"---" = "------"
+a- = b-