diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c
index 2af76133dfe777d90e7c1fc30aabca357591b67f..bd91c638b8347b25ecbe8605ae603a2e050301cd 100644
--- a/libavcodec/ra144.c
+++ b/libavcodec/ra144.c
@@ -236,15 +236,15 @@ static int eval_refl(int *refl, const int16_t *coefs, RA144Context *ractx)
     for (i=0; i < 10; i++)
         buffer2[i] = coefs[i];
 
-    u = refl[9] = bp2[9];
+    refl[9] = bp2[9];
 
-    if (u + 0x1000 > 0x1fff) {
+    if ((unsigned) bp2[9] + 0x1000 > 0x1fff) {
         av_log(ractx, AV_LOG_ERROR, "Overflow. Broken sample?\n");
         return 1;
     }
 
     for (c=8; c >= 0; c--) {
-        b = 0x1000-((u * u) >> 12);
+        b = 0x1000-((bp2[c+1] * bp2[c+1]) >> 12);
 
         if (!b)
             b = -2;
@@ -252,9 +252,9 @@ static int eval_refl(int *refl, const int16_t *coefs, RA144Context *ractx)
         for (u=0; u<=c; u++)
             bp1[u] = ((bp2[u] - ((refl[c+1] * bp2[c-u]) >> 12)) * (0x1000000 / b)) >> 12;
 
-        refl[c] = u = bp1[c];
+        refl[c] = bp1[c];
 
-        if ((u + 0x1000) > 0x1fff)
+        if ((unsigned) bp1[c] + 0x1000 > 0x1fff)
             return 1;
 
         FFSWAP(int *, bp1, bp2);