diff --git a/library/bignum.c b/library/bignum.c
index 2e5ad96..1a762a2 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -343,7 +343,7 @@
  */
 size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X )
 {
-    return mbedtls_mpi_core_bitlen( X->p, X->n );
+    return( mbedtls_mpi_core_bitlen( X->p, X->n ) );
 }
 
 /*
diff --git a/library/bignum_core.c b/library/bignum_core.c
index bb266a6..9cc05b9 100644
--- a/library/bignum_core.c
+++ b/library/bignum_core.c
@@ -50,7 +50,7 @@
         mask >>= 1;
     }
 
-    return j;
+    return( j );
 }
 
 size_t mbedtls_mpi_core_bitlen( const mbedtls_mpi_uint *X, size_t nx )
@@ -77,7 +77,7 @@
     unsigned char *x_ptr;
     mbedtls_mpi_uint tmp = 0;
 
-    for( i = 0, x_ptr = (unsigned char*) &x; i < ciL; i++, x_ptr++ )
+    for( i = 0, x_ptr = (unsigned char *) &x; i < ciL; i++, x_ptr++ )
     {
         tmp <<= CHAR_BIT;
         tmp |= (mbedtls_mpi_uint) *x_ptr;
diff --git a/library/bignum_mod.h b/library/bignum_mod.h
index 37aa946..ce871a9 100644
--- a/library/bignum_mod.h
+++ b/library/bignum_mod.h
@@ -49,8 +49,8 @@
     mbedtls_mpi_uint *p;
 } mbedtls_mpi_mod_residue;
 
-typedef void* mbedtls_mpi_mont_struct;
-typedef void* mbedtls_mpi_opt_red_struct;
+typedef void *mbedtls_mpi_mont_struct;
+typedef void *mbedtls_mpi_opt_red_struct;
 
 typedef struct {
     mbedtls_mpi_uint *p;
diff --git a/library/bignum_mod_raw.c b/library/bignum_mod_raw.c
index d3cd770..4d5fe81 100644
--- a/library/bignum_mod_raw.c
+++ b/library/bignum_mod_raw.c
@@ -82,9 +82,9 @@
     switch( m->ext_rep )
     {
         case MBEDTLS_MPI_MOD_EXT_REP_LE:
-            return mbedtls_mpi_core_write_le( X, m->n, buf, buflen );
+            return( mbedtls_mpi_core_write_le( X, m->n, buf, buflen ) );
         case MBEDTLS_MPI_MOD_EXT_REP_BE:
-            return mbedtls_mpi_core_write_be( X, m->n, buf, buflen );
+            return( mbedtls_mpi_core_write_be( X, m->n, buf, buflen ) );
         default:
             return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
     }
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index aaceb3a..c6eaaf0 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -10,7 +10,7 @@
 #if MBEDTLS_MPI_MAX_BITS > 792
 #define MPI_MAX_BITS_LARGER_THAN_792
 #endif
-#
+
 /* Check the validity of the sign bit in an MPI object. Reject representations
  * that are not supported by the rest of the library and indicate a bug when
  * constructing the value. */
@@ -236,9 +236,10 @@
 void mbedtls_mpi_core_io_be( data_t *input, int nb_int, int nx_32_int, int iret,
                              int oret )
 {
-    #define BMAX 1024
+#define BMAX 1024
+#define XMAX BMAX / sizeof( mbedtls_mpi_uint )
+
     unsigned char buf[BMAX];
-    #define XMAX BMAX / sizeof( mbedtls_mpi_uint )
     mbedtls_mpi_uint X[XMAX];
     size_t nx, nb;
     int ret;
@@ -288,8 +289,8 @@
 exit:
     ;
 
-    #undef BMAX
-    #undef XMAX
+#undef BMAX
+#undef XMAX
 }
 /* END_CASE */
 
@@ -297,9 +298,10 @@
 void mbedtls_mpi_core_io_le( data_t *input, int nb_int, int nx_32_int, int iret,
                              int oret )
 {
-    #define BMAX 1024
+#define BMAX 1024
+#define XMAX BMAX / sizeof( mbedtls_mpi_uint )
+
     unsigned char buf[BMAX];
-    #define XMAX BMAX / sizeof( mbedtls_mpi_uint )
     mbedtls_mpi_uint X[XMAX];
     size_t nx, nb;
     int ret;
@@ -347,8 +349,8 @@
 exit:
     ;
 
-    #undef BMAX
-    #undef XMAX
+#undef BMAX
+#undef XMAX
 }
 /* END_CASE */
 
@@ -385,9 +387,10 @@
 void mbedtls_mpi_mod_raw_io( data_t *input, int nb_int, int nx_64_int,
                              int iendian, int iret, int oret )
 {
-    #define BMAX 1024
+#define BMAX 1024
+#define XMAX BMAX / sizeof( mbedtls_mpi_uint )
+
     unsigned char buf[BMAX];
-    #define XMAX BMAX / sizeof( mbedtls_mpi_uint )
     mbedtls_mpi_uint X[XMAX];
     mbedtls_mpi_uint init[XMAX];
     mbedtls_mpi_mod_modulus m;
@@ -476,8 +479,8 @@
 exit:
     mbedtls_mpi_mod_modulus_free( &m );
 
-    #undef BMAX
-    #undef XMAX
+#undef BMAX
+#undef XMAX
 }
 /* END_CASE */
 
