diff --git a/include/polarssl/aes.h b/include/polarssl/aes.h
index 7404e4e..efc13da 100644
--- a/include/polarssl/aes.h
+++ b/include/polarssl/aes.h
@@ -124,7 +124,7 @@
 int aes_crypt_cfb128( aes_context *ctx,
                        int mode,
                        size_t length,
-                       int *iv_off,
+                       size_t *iv_off,
                        unsigned char iv[16],
                        const unsigned char *input,
                        unsigned char *output );
@@ -147,8 +147,8 @@
  * \return         0 if successful
  */
 int aes_crypt_ctr( aes_context *ctx,
-                       int length,
-                       int *nc_off,
+                       size_t length,
+                       size_t *nc_off,
                        unsigned char nonce_counter[16],
                        unsigned char stream_block[16],
                        const unsigned char *input,
diff --git a/include/polarssl/camellia.h b/include/polarssl/camellia.h
index 0dcb830..c81066c 100644
--- a/include/polarssl/camellia.h
+++ b/include/polarssl/camellia.h
@@ -130,11 +130,36 @@
 int camellia_crypt_cfb128( camellia_context *ctx,
                        int mode,
                        size_t length,
-                       int *iv_off,
+                       size_t *iv_off,
                        unsigned char iv[16],
                        const unsigned char *input,
                        unsigned char *output );
 
+/*
+ * \brief               CAMELLIA-CTR buffer encryption/decryption
+ *
+ * Warning: You have to keep the maximum use of your counter in mind!
+ *
+ * \param length        The length of the data
+ * \param nc_off        The offset in the current stream_block (for resuming
+ *                      within current cipher stream). The offset pointer to
+ *                      should be 0 at the start of a stream.
+ * \param nonce_counter The 128-bit nonce and counter.
+ * \param stream_block  The saved stream-block for resuming. Is overwritten
+ *                      by the function.
+ * \param input         The input data stream
+ * \param output        The output data stream
+ *
+ * \return         0 if successful
+ */
+int camellia_crypt_ctr( camellia_context *ctx,
+                       size_t length,
+                       size_t *nc_off,
+                       unsigned char nonce_counter[16],
+                       unsigned char stream_block[16],
+                       const unsigned char *input,
+                       unsigned char *output );
+
 /**
  * \brief          Checkup routine
  *
diff --git a/library/camellia.c b/library/camellia.c
index d725c19..e4c3259 100644
--- a/library/camellia.c
+++ b/library/camellia.c
@@ -580,12 +580,13 @@
 int camellia_crypt_cfb128( camellia_context *ctx,
                        int mode,
                        size_t length,
-                       int *iv_off,
+                       size_t *iv_off,
                        unsigned char iv[16],
                        const unsigned char *input,
                        unsigned char *output )
 {
-    int c, n = *iv_off;
+    int c;
+    size_t n = *iv_off;
 
     if( mode == CAMELLIA_DECRYPT )
     {
@@ -625,14 +626,15 @@
  * Camellia-CTR buffer encryption/decryption
  */
 int camellia_crypt_ctr( camellia_context *ctx,
-                       int length,
-                       int *nc_off,
+                       size_t length,
+                       size_t *nc_off,
                        unsigned char nonce_counter[16],
                        unsigned char stream_block[16],
                        const unsigned char *input,
                        unsigned char *output )
 {
-    int c, n = *nc_off, i, cb;
+    int c, i, cb;
+    size_t n = *nc_off;
 
     while( length-- )
     {
@@ -867,7 +869,7 @@
     unsigned char dst[16];
     unsigned char iv[16];
 #if defined(POLARSSL_CIPHER_MODE_CTR)
-    int offset, len;
+    size_t offset, len;
     unsigned char nonce_counter[16];
     unsigned char stream_block[16];
 #endif
diff --git a/tests/suites/test_suite_camellia.function b/tests/suites/test_suite_camellia.function
index 172f849..15bedce 100644
--- a/tests/suites/test_suite_camellia.function
+++ b/tests/suites/test_suite_camellia.function
@@ -137,7 +137,7 @@
     unsigned char dst_str[100];
     unsigned char output[100];
     camellia_context ctx;
-    int iv_offset = 0;
+    size_t iv_offset = 0;
     int key_len;
 
     memset(key_str, 0x00, 100);
@@ -167,7 +167,7 @@
     unsigned char dst_str[100];
     unsigned char output[100];
     camellia_context ctx;
-    int iv_offset = 0;
+    size_t iv_offset = 0;
     int key_len;
 
     memset(key_str, 0x00, 100);
