diff --git a/tests/suites/test_suite_mps.function b/tests/suites/test_suite_mps.function
index c619d6a..55cbd3d 100644
--- a/tests/suites/test_suite_mps.function
+++ b/tests/suites/test_suite_mps.function
@@ -40,7 +40,7 @@
     unsigned char acc[10];
     unsigned char *tmp;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -82,9 +82,9 @@
     unsigned char acc[10];
     unsigned char *tmp;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -137,7 +137,7 @@
     unsigned char *tmp;
     mbedtls_mps_size_t tmp_len;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -172,9 +172,9 @@
     unsigned char *tmp;
     mbedtls_mps_size_t tmp_len;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -217,7 +217,7 @@
     unsigned char buf[100];
     unsigned char *tmp;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -257,7 +257,7 @@
     mbedtls_mps_reader rd;
     mbedtls_mps_size_t tmp_len;
 
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -306,9 +306,9 @@
     unsigned char *tmp;
     unsigned char acc[40];
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -427,9 +427,9 @@
     unsigned char acc[70];
     mbedtls_mps_reader rd;
     mbedtls_mps_size_t fetch_len;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -458,7 +458,7 @@
             break;
 
         case 1: /* 50 x 1byte */
-            for( int num_feed=0; num_feed<49; num_feed++ )
+            for( size_t num_feed=0; num_feed<49; num_feed++ )
             {
                 TEST_ASSERT( mbedtls_mps_reader_feed( &rd, bufB + num_feed, 1 ) ==
                              MBEDTLS_ERR_MPS_READER_NEED_MORE );
@@ -467,7 +467,7 @@
             break;
 
         case 2: /* 49 x 1byte + 51bytes */
-            for( int num_feed=0; num_feed<49; num_feed++ )
+            for( size_t num_feed=0; num_feed<49; num_feed++ )
             {
                 TEST_ASSERT( mbedtls_mps_reader_feed( &rd, bufB + num_feed, 1 ) ==
                              MBEDTLS_ERR_MPS_READER_NEED_MORE );
@@ -522,7 +522,7 @@
     unsigned char buf[100];
     unsigned char *tmp;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -582,7 +582,7 @@
     unsigned char *tmp;
     mbedtls_mps_reader rd;
 
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
@@ -626,11 +626,11 @@
     unsigned char acc[50];
     mbedtls_mps_size_t tmp_len;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
-    for( int i=0; (unsigned) i < sizeof( bufC ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufC ); i++ )
         bufC[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -945,9 +945,9 @@
     unsigned char acc[40];
     mbedtls_mps_reader rd;
     int success = 0;
-    for( int i=0; (unsigned) i < sizeof( bufA ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufA ); i++ )
         bufA[i] = (unsigned char) i;
-    for( int i=0; (unsigned) i < sizeof( bufB ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( bufB ); i++ )
         bufB[i] = ~ ((unsigned char) i);
 
     /* Preparation (lower layer) */
@@ -1080,7 +1080,7 @@
     unsigned char buf[100];
     unsigned char *tmp;
     mbedtls_mps_reader rd;
-    for( int i=0; (unsigned) i < sizeof( buf ); i++ )
+    for( size_t i=0; (unsigned) i < sizeof( buf ); i++ )
         buf[i] = (unsigned char) i;
 
     /* Preparation (lower layer) */
