diff --git a/celt/vq.c b/celt/vq.c
index a064df0047ec111ae4b400929a9a4dceab1c391d..6bf9b2b0c5ed70671e30644d7707dcec4993d9d9 100644
--- a/celt/vq.c
+++ b/celt/vq.c
@@ -147,9 +147,11 @@ static unsigned extract_collapse_mask(int *iy, int N, int B)
    collapse_mask = 0;
    i=0; do {
       int j;
+      unsigned tmp=0;
       j=0; do {
-         collapse_mask |= (iy[i*N0+j]!=0)<<i;
+         tmp |= iy[i*N0+j];
       } while (++j<N0);
+      collapse_mask |= (tmp!=0)<<i;
    } while (++i<B);
    return collapse_mask;
 }