diff --git a/src/os/object/outputstream.cc b/src/os/object/outputstream.cc
index 435987466e83547dbba89ded77e0aad55ccd72d7..fe4ec7fd4d5ef1938551f55cda19675c81758164 100644
--- a/src/os/object/outputstream.cc
+++ b/src/os/object/outputstream.cc
@@ -178,18 +178,18 @@ void OutputStream::printf_float(float num)
 		num *= -1;
 	}
 	if (num > 1000) {
-		put('0' + (((int)num % 10000) / 1000));
+		put('0' + (((unsigned int)num % 10000) / 1000));
 	}
 	if (num > 100) {
-		put('0' + (((int)num % 1000) / 100));
+		put('0' + (((unsigned int)num % 1000) / 100));
 	}
 	if (num > 10) {
-		put('0' + (((int)num % 100) / 10));
+		put('0' + (((unsigned int)num % 100) / 10));
 	}
-	put('0' + ((int)num % 10));
+	put('0' + ((unsigned int)num % 10));
 	put('.');
-	put('0' + ((int)(num * 10) % 10));
-	put('0' + ((int)(num * 100) % 10));
+	put('0' + ((unsigned int)(num * 10) % 10));
+	put('0' + ((unsigned int)(num * 100) % 10));
 }
 
 // FLUSH