diff --git a/libcelt/entcode.h b/libcelt/entcode.h
index ee1d1d9ac7117774635a26175e8f1fe80939f55b..bc01a58cba0778d075ccc7112329c400901d8ce0 100644
--- a/libcelt/entcode.h
+++ b/libcelt/entcode.h
@@ -56,34 +56,27 @@ struct ec_byte_buffer{
   unsigned char *buf;
   unsigned char *ptr;
   unsigned char *end_ptr;
-  long           storage;
+  ec_uint32      storage;
 };
 
 /*Encoding functions.*/
-void ec_byte_writeinit_buffer(ec_byte_buffer *_b, unsigned char *_buf, long _size);
-void ec_byte_shrink(ec_byte_buffer *_b, long _size);
-void ec_byte_writeinit(ec_byte_buffer *_b);
-void ec_byte_writetrunc(ec_byte_buffer *_b,long _bytes);
+void ec_byte_writeinit_buffer(ec_byte_buffer *_b, unsigned char *_buf, ec_uint32 _size);
+void ec_byte_shrink(ec_byte_buffer *_b, ec_uint32 _size);
 int ec_byte_write1(ec_byte_buffer *_b,unsigned _value);
 int ec_byte_write_at_end(ec_byte_buffer *_b,unsigned _value);
-void ec_byte_write4(ec_byte_buffer *_b,ec_uint32 _value);
-void ec_byte_writecopy(ec_byte_buffer *_b,void *_source,long _bytes);
-void ec_byte_writeclear(ec_byte_buffer *_b);
 /*Decoding functions.*/
-void ec_byte_readinit(ec_byte_buffer *_b,unsigned char *_buf,long _bytes);
-int ec_byte_look1(ec_byte_buffer *_b);
+void ec_byte_readinit(ec_byte_buffer *_b,unsigned char *_buf,ec_uint32 _bytes);
 unsigned char ec_byte_look_at_end(ec_byte_buffer *_b);
 int ec_byte_look4(ec_byte_buffer *_b,ec_uint32 *_val);
 void ec_byte_adv1(ec_byte_buffer *_b);
 void ec_byte_adv4(ec_byte_buffer *_b);
 int ec_byte_read1(ec_byte_buffer *_b);
-int ec_byte_read4(ec_byte_buffer *_b,ec_uint32 *_val);
 /*Shared functions.*/
 static inline void ec_byte_reset(ec_byte_buffer *_b){
    _b->ptr=_b->buf;
 }
 
-static inline long ec_byte_bytes(ec_byte_buffer *_b){
+static inline ec_uint32 ec_byte_bytes(ec_byte_buffer *_b){
    return _b->ptr-_b->buf;
 }
 
diff --git a/libcelt/entdec.c b/libcelt/entdec.c
index b29eae1f1ea45a2776b70b2c67a0c7e20a3095ce..d56fc5bee1f8040da6f21413e8109e3ba45d9ef8 100644
--- a/libcelt/entdec.c
+++ b/libcelt/entdec.c
@@ -38,7 +38,7 @@
 #include "os_support.h"
 #include "arch.h"
 
-void ec_byte_readinit(ec_byte_buffer *_b,unsigned char *_buf,long _bytes){
+void ec_byte_readinit(ec_byte_buffer *_b,unsigned char *_buf,ec_uint32 _bytes){
   _b->buf=_b->ptr=_buf;
   _b->storage=_bytes;
   _b->end_ptr=_b->buf+_bytes-1;
diff --git a/libcelt/entdec.h b/libcelt/entdec.h
index 7e9d1278e6082eb3dab260f0c515ad2b76df7247..c13bce7773a74586d9b1115e7541acf475f4010d 100644
--- a/libcelt/entdec.h
+++ b/libcelt/entdec.h
@@ -123,7 +123,7 @@ int ec_dec_bit_prob(ec_dec *_this,unsigned _prob);
   Return: The number of bits scaled by 2**_b.
           This will always be slightly larger than the exact value (e.g., all
            rounding error is in the positive direction).*/
-long ec_dec_tell(ec_dec *_this,int _b);
+ec_uint32 ec_dec_tell(ec_dec *_this,int _b);
 
 /*Returns a nonzero value if any error has been detected during decoding*/
 int ec_dec_get_error(ec_dec *_this);
diff --git a/libcelt/entenc.c b/libcelt/entenc.c
index 82f208edeba7d50a53ee50cdf6a42ef833c12332..1e194e6123b012768c79a77b4e4ab226ec00ecb7 100644
--- a/libcelt/entenc.c
+++ b/libcelt/entenc.c
@@ -38,13 +38,13 @@
 #include "arch.h"
 
 
-void ec_byte_writeinit_buffer(ec_byte_buffer *_b, unsigned char *_buf, long _size){
+void ec_byte_writeinit_buffer(ec_byte_buffer *_b, unsigned char *_buf, ec_uint32 _size){
   _b->ptr=_b->buf=_buf;
   _b->end_ptr=_b->buf+_size-1;
   _b->storage=_size;
 }
 
-void ec_byte_shrink(ec_byte_buffer *_b, long _size){
+void ec_byte_shrink(ec_byte_buffer *_b, ec_uint32 _size){
    _b->end_ptr=_b->buf+_size-1;
    _b->storage=_size;
 }
diff --git a/libcelt/entenc.h b/libcelt/entenc.h
index 09abe9f70079e788c488fb9e1577ad5de08ea05c..5cff4d006ee553a4c79b57eb92ff4f94317b3957 100644
--- a/libcelt/entenc.h
+++ b/libcelt/entenc.h
@@ -104,7 +104,7 @@ void ec_enc_bit_prob(ec_enc *_this,int val,unsigned _prob);
   Return: The number of bits scaled by 2**_b.
           This will always be slightly larger than the exact value (e.g., all
            rounding error is in the positive direction).*/
-long ec_enc_tell(ec_enc *_this,int _b);
+ec_uint32 ec_enc_tell(ec_enc *_this,int _b);
 
 /*Indicates that there are no more symbols to encode.
   All reamining output bytes are flushed to the output buffer.
diff --git a/libcelt/rangedec.c b/libcelt/rangedec.c
index 65a5e60e005618ebe5ad94f9e08d9bd8978c9472..0d70f565ebdc23e26f513809d756f796e51722a6 100644
--- a/libcelt/rangedec.c
+++ b/libcelt/rangedec.c
@@ -203,10 +203,10 @@ int ec_dec_bit_prob(ec_dec *_this,unsigned _prob){
   return val;
 }
 
-long ec_dec_tell(ec_dec *_this,int _b){
+ec_uint32 ec_dec_tell(ec_dec *_this,int _b){
   ec_uint32 r;
   int       l;
-  long      nbits;
+  ec_uint32      nbits;
   nbits=(ec_byte_bytes(_this->buf)-(EC_CODE_BITS+EC_SYM_BITS-1)/EC_SYM_BITS)*
    EC_SYM_BITS;
   /*To handle the non-integral number of bits still left in the decoder state,
diff --git a/libcelt/rangeenc.c b/libcelt/rangeenc.c
index 9f874b21e6824ecb40f50e7639141b906f0bc37b..48b00c2fbb501ea4b2784ee7f2027d98db754d70 100644
--- a/libcelt/rangeenc.c
+++ b/libcelt/rangeenc.c
@@ -168,10 +168,10 @@ void ec_encode_raw(ec_enc *_this,unsigned _fl,unsigned _fh,unsigned bits){
   _this->end_bits_left -= bits;
 }
 
-long ec_enc_tell(ec_enc *_this,int _b){
+ec_uint32 ec_enc_tell(ec_enc *_this,int _b){
   ec_uint32 r;
   int       l;
-  long      nbits;
+  ec_uint32      nbits;
   nbits=(ec_byte_bytes(_this->buf)+(_this->rem>=0)+_this->ext)*EC_SYM_BITS;
   /*To handle the non-integral number of bits still left in the encoder state,
      we compute the number of bits of low that must be encoded to ensure that
diff --git a/tests/ectest.c b/tests/ectest.c
index 4552c1b654ea69b24a829c2a37153897f212518b..76c3f4e370462158d7fb710867adfc719359a6de 100644
--- a/tests/ectest.c
+++ b/tests/ectest.c
@@ -132,7 +132,7 @@ int main(int _argc,char **_argv){
     ec_enc_done(&enc);
     if ((tell_bits+7)/8 < ec_byte_bytes(&buf))
     {
-      fprintf (stderr, "tell() lied, there's %li bytes instead of %d (Random seed: %u)\n", 
+      fprintf (stderr, "tell() lied, there's %i bytes instead of %d (Random seed: %u)\n",
                ec_byte_bytes(&buf), (tell_bits+7)/8,seed);
       ret=-1;
     }