Index: ram/dec2fr.c
===================================================================
--- ram/dec2fr.c	(revision bbf1e661c659606582632626dd1a2248b662dc0c)
+++ ram/dec2fr.c	(revision e2707e9a035970687555f1cb173ecbeac9232bd6)
@@ -49,16 +49,16 @@
 
 				if (s[3] EQ '-')
-					return(0x8000);  /* -100 */
+					return(-32768);  /* -100 */
 				else
-					return(0x7FFF);  /* +100 */
+					return(32767);  /* +100 */
 
 			} else {
 
-				return(0xFFFF);	/* ERROR */
+				return(-1);	/* ERROR */
 			}
 
 		} else {
 
-			return(0xFFFF);	/* ERROR */
+			return(-1);	/* ERROR */
 
 		}
@@ -66,5 +66,5 @@
 	} else if (s[0] EQ '0') {
 
-		i = (d2f[0][s[1] - '0'] + d2f[1][s[2] - '0']) >> 1;
+		i = (int16_t)((d2f[0][s[1] - '0'] + d2f[1][s[2] - '0']) >> 1);
 
 		if (s[3] EQ '-') {
@@ -81,5 +81,5 @@
 	}
 
-	return(0xFFFF);	/* ERROR */
+	return(-1);	/* ERROR */
 }
 
@@ -110,5 +110,5 @@
 	}
 
-	if (v & 0x8000) {
+	if (v & (int16_t)0x8000) {
 
 		v = ~v;		/* negative number */
