diff --git generic/tclObj.c generic/tclObj.c
index 1fd674f2..a03ebb44 100644
--- generic/tclObj.c
+++ generic/tclObj.c
@@ -3547,7 +3547,7 @@ Tcl_SetBignumObj(
 	    goto tooLargeForLong;
 	}
 	if (bignumValue->sign) {
-	    TclSetLongObj(objPtr, -(long)value);
+	    TclSetLongObj(objPtr, (long)(0-value));
 	} else {
 	    TclSetLongObj(objPtr, (long)value);
 	}
@@ -3573,7 +3573,7 @@ Tcl_SetBignumObj(
 	    goto tooLargeForWide;
 	}
 	if (bignumValue->sign) {
-	    TclSetWideIntObj(objPtr, -(Tcl_WideInt)value);
+	    TclSetWideIntObj(objPtr, (Tcl_WideInt)(0-value));
 	} else {
 	    TclSetWideIntObj(objPtr, (Tcl_WideInt)value);
 	}
