diff --git a/libcelt/entenc.c b/libcelt/entenc.c
index 0b4b229f38752ef861c6d74a06adf90e1622a6ec..bff2d8992338df80b855eed58f812bbbb8c4c520 100644
--- a/libcelt/entenc.c
+++ b/libcelt/entenc.c
@@ -195,6 +195,7 @@ void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _bits){
   int       used;
   window=_this->end_window;
   used=_this->nend_bits;
+  celt_assert(_bits>0);
   if(used+_bits>EC_WINDOW_SIZE){
     do{
       _this->error|=ec_write_byte_at_end(_this,(unsigned)window&EC_SYM_MAX);
diff --git a/libcelt/entenc.h b/libcelt/entenc.h
index 847f77c8530a32249e4912389f1a4d129bce05f8..d65d734ce528b6612c7f9ce04566a35c2ecce921 100644
--- a/libcelt/entenc.h
+++ b/libcelt/entenc.h
@@ -73,7 +73,7 @@ void ec_enc_uint(ec_enc *_this,opus_uint32 _fl,opus_uint32 _ft);
 /*Encodes a sequence of raw bits in the stream.
   _fl:  The bits to encode.
   _ftb: The number of bits to encode.
-        This must be between 0 and 25, inclusive.*/
+        This must be between 1 and 25, inclusive.*/
 void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _ftb);
 
 /*Overwrites a few bits at the very start of an existing stream, after they
diff --git a/libcelt/tests/ectest.c b/libcelt/tests/ectest.c
index 7daab33e8ee36163e50abc5f796023a9016564b0..2d7551f4f4526226a144634e95ea916ab245320a 100644
--- a/libcelt/tests/ectest.c
+++ b/libcelt/tests/ectest.c
@@ -55,7 +55,7 @@ int main(int _argc,char **_argv){
     }
   }
   /*Testing encoding of raw bit values.*/
-  for(ftb=0;ftb<16;ftb++){
+  for(ftb=1;ftb<16;ftb++){
     for(i=0;i<(1<<ftb);i++){
       entropy+=ftb;
       nbits=ec_tell(&enc);
@@ -84,7 +84,7 @@ int main(int _argc,char **_argv){
       }
     }
   }
-  for(ftb=0;ftb<16;ftb++){
+  for(ftb=1;ftb<16;ftb++){
     for(i=0;i<(1<<ftb);i++){
       sym=ec_dec_bits(&dec,ftb);
       if(sym!=(unsigned)i){