diff --git a/modules/audio_filter/converter/format.c b/modules/audio_filter/converter/format.c
index fbcf651b8557c13e142a9f765ac089e48802d19c..3e4bb3bd70b208dbcecbb17f0896ded14853a6a0 100644
--- a/modules/audio_filter/converter/format.c
+++ b/modules/audio_filter/converter/format.c
@@ -278,7 +278,7 @@ static block_t *Fi32toS16(filter_t *filter, block_t *b)
         else if (v <= -FIXED32_ONE)
             *dst++ = INT16_MIN;
         else
-            *dst++ = v >> (32 - FIXED32_FRACBITS);
+            *dst++ = v >> (FIXED32_FRACBITS - 15);
     }
     b->i_buffer /= 2;
     return b;