diff --git a/apps/netutils/json/cJSON_stream_parse.c b/apps/netutils/json/cJSON_stream_parse.c
index 75e6171180863ba073a517a48a13babb8ac50457..c655de0e81c0e4dd731ac3b2ad4baf563b07e842 100644
--- a/apps/netutils/json/cJSON_stream_parse.c
+++ b/apps/netutils/json/cJSON_stream_parse.c
@@ -147,7 +147,7 @@ static cJSON_instream *stream_parse_number(cJSON *item, cJSON_instream *in)
       if (stream_peek(in) != '.' && stream_peek(in) != 'e' &&
           stream_peek(in) != 'E')
         {
-          n = sign * 0.0;
+          n = copysign(0.0, sign);
           item->valuedouble = n;
           item->valueint = (int)n;
           item->type = cJSON_Number;
@@ -211,7 +211,7 @@ static cJSON_instream *stream_parse_number(cJSON *item, cJSON_instream *in)
 
   /* number = +/- number.fraction * 10^+/-exponent */
 
-  n = sign * n * pow(10.0, (scale + subscale * signsubscale));
+  n = copysign(n * pow(10.0, (scale + subscale * signsubscale)), sign);
   item->valuedouble = n;
   item->valueint = (int)n;
   item->type = cJSON_Number;