diff --git a/tests/suites/test_suite_mpi.data b/tests/suites/test_suite_mpi.data
index a4cd07a..7868a24 100644
--- a/tests/suites/test_suite_mpi.data
+++ b/tests/suites/test_suite_mpi.data
@@ -681,41 +681,23 @@
 mbedtls_mpi_core_lt_ct: x>y (alternating limbs)
 mpi_core_lt_ct:"FF1111111111111111":"11FFFFFFFFFFFFFFFF":0
 
-mbedtls_mpi_core_cond_assign: same size, true condition
-mpi_core_cond_assign:"FFFFFFFF":"11111111":1
+mbedtls_mpi_core_cond_assign
+mpi_core_cond_assign:"FFFFFFFF":"11111111"
 
-mbedtls_mpi_core_cond_assign: same size, false condition
-mpi_core_cond_assign:"FFFFFFFF":"11111111":0
+mbedtls_mpi_core_cond_swap: same value
+mpi_core_cond_swap:"FFFFFFFF":"FFFFFFFF"
 
-mbedtls_mpi_core_cond_assign: target larger, true condition
-mpi_core_cond_assign:"FFFFFFFFEEEEEEEEDDDDDDDD":"11111111":1
+mbedtls_mpi_core_cond_swap: different value
+mpi_core_cond_swap:"FFFFFFFF":"11111111"
 
-mbedtls_mpi_core_cond_assign: target larger, false condition
-mpi_core_cond_assign:"FFFFFFFFEEEEEEEEDDDDDDDD":"11111111":0
+mbedtls_mpi_mod_raw_cond_assign
+mpi_mod_raw_cond_assign:"FFFFFFFF":"11111111"
 
-mbedtls_mpi_core_cond_swap: same value, true condition
-mpi_core_cond_swap:"FFFFFFFF":"FFFFFFFF":1
+mbedtls_mpi_mod_raw_cond_swap: same value
+mpi_mod_raw_cond_swap:"FFFFFFFF":"FFFFFFFF"
 
-mbedtls_mpi_core_cond_swap: same size, true condition
-mpi_core_cond_swap:"FFFFFFFF":"11111111":1
-
-mbedtls_mpi_core_cond_swap: same size, false condition
-mpi_core_cond_swap:"FFFFFFFF":"11111111":0
-
-mbedtls_mpi_mod_raw_cond_assign: same size, true condition
-mpi_mod_raw_cond_assign:"FFFFFFFF":"11111111":1
-
-mbedtls_mpi_mod_raw_cond_assign: same size, false condition
-mpi_mod_raw_cond_assign:"FFFFFFFF":"11111111":0
-
-mbedtls_mpi_mod_raw_cond_swap: same value, true condition
-mpi_mod_raw_cond_swap:"FFFFFFFF":"FFFFFFFF":1
-
-mbedtls_mpi_mod_raw_cond_swap: same size, true condition
-mpi_mod_raw_cond_swap:"FFFFFFFF":"11111111":1
-
-mbedtls_mpi_mod_raw_cond_swap: same size, false condition
-mpi_mod_raw_cond_swap:"FFFFFFFF":"11111111":0
+mbedtls_mpi_mod_raw_cond_swap: different value
+mpi_mod_raw_cond_swap:"FFFFFFFF":"11111111"
 
 Base test mbedtls_mpi_lt_mpi_ct #1
 mpi_lt_mpi_ct:1:"2B5":1:"2B5":0:0
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index 9cb2d90..7a87c07 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -765,8 +765,7 @@
 
 /* BEGIN_CASE */
 void mpi_core_cond_assign( data_t * input_X,
-                           data_t * input_Y,
-                           int cond )
+                           data_t * input_Y )
 {
     #define MAX_LEN 64
     mbedtls_mpi_uint X[MAX_LEN];
@@ -783,21 +782,29 @@
     TEST_ASSERT( mbedtls_mpi_core_read_be( Y, len_Y, input_Y->x, input_Y->len )
                  == 0 );
 
+    /* condition is false */
     TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    mbedtls_mpi_core_cond_assign( X, Y, len_Y, cond );
+    mbedtls_mpi_core_cond_assign( X, Y, len_Y, 0 );
 
     TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    if( cond )
-        ASSERT_COMPARE( X, len_Y * sizeof( mbedtls_mpi_uint ),
-                        Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+    TEST_ASSERT( memcmp( X, Y, MIN( len_X, len_Y ) *
+                               sizeof( mbedtls_mpi_uint ) ) != 0 );
 
-    else
-        TEST_ASSERT( memcmp( X, Y, MIN( len_X, len_Y ) *
-                                   sizeof( mbedtls_mpi_uint ) ) != 0 );
+    /* condition is true */
+    TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    mbedtls_mpi_core_cond_assign( X, Y, len_Y, 1 );
+
+    TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    ASSERT_COMPARE( X, len_Y * sizeof( mbedtls_mpi_uint ),
+                    Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
 exit:
     ;
@@ -808,8 +815,7 @@
 
 /* BEGIN_CASE */
 void mpi_core_cond_swap( data_t * input_X,
-                         data_t * input_Y,
-                         int cond )
+                         data_t * input_Y )
 {
     #define MAX_LEN 64
     mbedtls_mpi_uint tmp_X[MAX_LEN];
@@ -832,29 +838,33 @@
                  == 0 );
     memcpy( Y, tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
+    /* condition is false */
     TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    mbedtls_mpi_core_cond_swap( X, Y, len_X, cond );
+    mbedtls_mpi_core_cond_swap( X, Y, len_X, 0 );
 
     TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    if( cond )
-    {
-        ASSERT_COMPARE( X,     len_Y * sizeof( mbedtls_mpi_uint ),
-                        tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
-        ASSERT_COMPARE( Y,     len_X * sizeof( mbedtls_mpi_uint ),
-                        tmp_X, len_X * sizeof( mbedtls_mpi_uint ) );
-    }
+    ASSERT_COMPARE( X,     len_X * sizeof( mbedtls_mpi_uint ),
+                    tmp_X, len_X * sizeof( mbedtls_mpi_uint ) );
+    ASSERT_COMPARE( Y,     len_Y * sizeof( mbedtls_mpi_uint ),
+                    tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    else
-    {
-        ASSERT_COMPARE( X,     len_X * sizeof( mbedtls_mpi_uint ),
-                        tmp_X, len_X * sizeof( mbedtls_mpi_uint ) );
-        ASSERT_COMPARE( Y,     len_Y * sizeof( mbedtls_mpi_uint ),
-                        tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
-    }
+    /* condition is true */
+    TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    mbedtls_mpi_core_cond_swap( X, Y, len_X, 1 );
+
+    TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    ASSERT_COMPARE( X,     len_Y * sizeof( mbedtls_mpi_uint ),
+                    tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+    ASSERT_COMPARE( Y,     len_X * sizeof( mbedtls_mpi_uint ),
+                    tmp_X, len_X * sizeof( mbedtls_mpi_uint ) );
 
 exit:
     ;
@@ -865,8 +875,7 @@
 
 /* BEGIN_CASE */
 void mpi_mod_raw_cond_assign( data_t * input_X,
-                              data_t * input_Y,
-                              int cond )
+                              data_t * input_Y )
 {
     #define MAX_LEN 64
     mbedtls_mpi_uint X[MAX_LEN];
@@ -896,20 +905,28 @@
                                            input_Y->x, input_Y->len )
                  == 0 );
 
+    /* condition is false */
     TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    mbedtls_mpi_mod_raw_cond_assign( X, Y, &m, cond );
+    mbedtls_mpi_mod_raw_cond_assign( X, Y, &m, 0 );
 
     TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    if( cond )
-        ASSERT_COMPARE( X, len_Y * sizeof( mbedtls_mpi_uint ),
-                        Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+    TEST_ASSERT( memcmp( X, Y, m.limbs * sizeof( mbedtls_mpi_uint ) ) != 0 );
 
-    else
-        TEST_ASSERT( memcmp( X, Y, m.limbs * sizeof( mbedtls_mpi_uint ) ) != 0 );
+    /* condition is true */
+    TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    mbedtls_mpi_mod_raw_cond_assign( X, Y, &m, 1 );
+
+    TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    ASSERT_COMPARE( X, len_Y * sizeof( mbedtls_mpi_uint ),
+                    Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
 exit:
     ;
@@ -920,8 +937,7 @@
 
 /* BEGIN_CASE */
 void mpi_mod_raw_cond_swap( data_t * input_X,
-                            data_t * input_Y,
-                            int cond )
+                            data_t * input_Y )
 {
     #define MAX_LEN 64
     mbedtls_mpi_uint tmp_X[MAX_LEN];
@@ -953,29 +969,33 @@
                  == 0 );
     memcpy( Y, tmp_Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
+    /* condition is false */
     TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    mbedtls_mpi_mod_raw_cond_swap( X, Y, &m, cond );
+    mbedtls_mpi_mod_raw_cond_swap( X, Y, &m, 0 );
 
     TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
     TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
 
-    if( cond )
-    {
-        ASSERT_COMPARE( X,     m.limbs * sizeof( mbedtls_mpi_uint ),
-                        tmp_Y, len_Y   * sizeof( mbedtls_mpi_uint ) );
-        ASSERT_COMPARE( Y,     m.limbs * sizeof( mbedtls_mpi_uint ),
-                        tmp_X, len_X   * sizeof( mbedtls_mpi_uint ) );
-    }
+    ASSERT_COMPARE( X,     len_X   * sizeof( mbedtls_mpi_uint ),
+                    tmp_X, m.limbs * sizeof( mbedtls_mpi_uint ) );
+    ASSERT_COMPARE( Y,     len_Y   * sizeof( mbedtls_mpi_uint ),
+                    tmp_Y, m.limbs * sizeof( mbedtls_mpi_uint ) );
 
-    else
-    {
-        ASSERT_COMPARE( X,     len_X   * sizeof( mbedtls_mpi_uint ),
-                        tmp_X, m.limbs * sizeof( mbedtls_mpi_uint ) );
-        ASSERT_COMPARE( Y,     len_Y   * sizeof( mbedtls_mpi_uint ),
-                        tmp_Y, m.limbs * sizeof( mbedtls_mpi_uint ) );
-    }
+    /* condition is true */
+    TEST_CF_SECRET( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_SECRET( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    mbedtls_mpi_mod_raw_cond_swap( X, Y, &m, 1 );
+
+    TEST_CF_PUBLIC( X, len_X * sizeof( mbedtls_mpi_uint ) );
+    TEST_CF_PUBLIC( Y, len_Y * sizeof( mbedtls_mpi_uint ) );
+
+    ASSERT_COMPARE( X,     m.limbs * sizeof( mbedtls_mpi_uint ),
+                    tmp_Y, len_Y   * sizeof( mbedtls_mpi_uint ) );
+    ASSERT_COMPARE( Y,     m.limbs * sizeof( mbedtls_mpi_uint ),
+                    tmp_X, len_X   * sizeof( mbedtls_mpi_uint ) );
 
 exit:
     ;
