diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index d2a31cae0b148e097e44d2b55a912d1098aba48d..af17acfb7547c962ec894bfea2b43d67d8925dfe 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -787,7 +787,8 @@ static int decode_audio_specific_config(AACContext *ac,
  */
 static av_always_inline int lcg_random(int previous_val)
 {
-    return previous_val * 1664525 + 1013904223;
+    union { unsigned u; int s; } v = { previous_val * 1664525u + 1013904223 };
+    return v.s;
 }
 
 static av_always_inline void reset_predict_state(PredictorState *ps)