From f48005148fcc8468b742c87c15913f509eb49437 Mon Sep 17 00:00:00 2001
From: Mark VanderVoord <mvandervoord@gmail.com>
Date: Mon, 1 Sep 2014 18:20:56 -0400
Subject: [PATCH] A (hopefully) more universal fix for the signed max negative
 value printer

---
 src/unity.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/unity.c b/src/unity.c
index 0881e2e..32d81fe 100644
--- a/src/unity.c
+++ b/src/unity.c
@@ -125,18 +125,24 @@ void UnityPrintNumber(const _U_SINT number_to_print)
 {
     _U_SINT divisor = 1;
     _U_SINT next_divisor;
-
     _U_UINT number;
 
-    if (number_to_print < 0)
+    if (number_to_print == (1l << (UNITY_LONG_WIDTH-1)))
     {
+        //The largest representable negative number
         UNITY_OUTPUT_CHAR('-');
-        number = -number_to_print;
+        number = (_U_UINT)number_to_print;
+    }
+    else if (number_to_print < 0)
+    {
+        //Some other negative number
+        UNITY_OUTPUT_CHAR('-');
+        number = (_U_UINT)(-number_to_print);
     }
     else
     {
-        number = number_to_print;
-
+        //Positive number
+        number = (_U_UINT)number_to_print;
     }
 
     // figure out initial divisor