diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index 0039d2f..cbc024a 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -121,27 +121,25 @@
 }
 
 /* Counts the number of words in vli. */
-static wordcount_t vli_numDigits(const uECC_word_t *vli,
-				 const wordcount_t max_words)
+static wordcount_t vli_numDigits(const uECC_word_t *vli)
 {
 
 	wordcount_t i;
 	/* Search from the end until we find a non-zero digit. We do it in reverse
 	 * because we expect that most digits will be nonzero. */
-	for (i = max_words - 1; i >= 0 && vli[i] == 0; --i) {
+	for (i = NUM_ECC_WORDS - 1; i >= 0 && vli[i] == 0; --i) {
 	}
 
 	return (i + 1);
 }
 
-bitcount_t uECC_vli_numBits(const uECC_word_t *vli,
-			    const wordcount_t max_words)
+bitcount_t uECC_vli_numBits(const uECC_word_t *vli)
 {
 
 	uECC_word_t i;
 	uECC_word_t digit;
 
-	wordcount_t num_digits = vli_numDigits(vli, max_words);
+	wordcount_t num_digits = vli_numDigits(vli);
 	if (num_digits == 0) {
 		return 0;
 	}
@@ -461,7 +459,7 @@
 
 	/* Shift mod so its highest set bit is at the maximum position. */
 	bitcount_t shift = (num_words * 2 * uECC_WORD_BITS) -
-			   uECC_vli_numBits(mod, num_words);
+			   uECC_vli_numBits(mod);
 	wordcount_t word_shift = shift / uECC_WORD_BITS;
 	wordcount_t bit_shift = shift % uECC_WORD_BITS;
 	uECC_word_t carry = 0;
@@ -1029,7 +1027,7 @@
 {
 	uECC_word_t mask = (uECC_word_t)-1;
 	uECC_word_t tries;
-	bitcount_t num_bits = uECC_vli_numBits(top, num_words);
+	bitcount_t num_bits = uECC_vli_numBits(top);
 
 	if (!g_rng_function) {
 		return 0;
diff --git a/tinycrypt/ecc_dsa.c b/tinycrypt/ecc_dsa.c
index 67b4ac7..4fe4343 100644
--- a/tinycrypt/ecc_dsa.c
+++ b/tinycrypt/ecc_dsa.c
@@ -159,7 +159,7 @@
 	bits2int(tmp, message_hash, hash_size, curve);
 	uECC_vli_modAdd(s, tmp, s, curve->n, num_n_words); /* s = e + r*d */
 	uECC_vli_modMult(s, s, k, curve->n, num_n_words);  /* s = (e + r*d) / k */
-	if (uECC_vli_numBits(s, num_n_words) > (bitcount_t)curve->num_bytes * 8) {
+	if (uECC_vli_numBits(s) > (bitcount_t)curve->num_bytes * 8) {
 		return 0;
 	}
 
@@ -264,8 +264,8 @@
 	points[1] = curve->G;
 	points[2] = _public;
 	points[3] = sum;
-	num_bits = smax(uECC_vli_numBits(u1, num_n_words),
-	uECC_vli_numBits(u2, num_n_words));
+	num_bits = smax(uECC_vli_numBits(u1),
+	uECC_vli_numBits(u2));
 
 	point = points[(!!uECC_vli_testBit(u1, num_bits - 1)) |
                        ((!!uECC_vli_testBit(u2, num_bits - 1)) << 1)];
