diff --git a/include/tinycrypt/ecc.h b/include/tinycrypt/ecc.h
index d6f2c9d..2da74b3 100644
--- a/include/tinycrypt/ecc.h
+++ b/include/tinycrypt/ecc.h
@@ -440,7 +440,7 @@
  * @param num_words -- number of words
  */
 void uECC_vli_modInv(uECC_word_t *result, const uECC_word_t *input,
-		     const uECC_word_t *mod, wordcount_t num_words);
+		     const uECC_word_t *mod);
 
 /*
  * @brief Sets dest = src.
diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index 81464e1..6740375 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -514,8 +514,7 @@
 #define EVEN(vli) (!(vli[0] & 1))
 
 static void vli_modInv_update(uECC_word_t *uv,
-			      const uECC_word_t *mod,
-			      wordcount_t num_words)
+			      const uECC_word_t *mod)
 {
 
 	uECC_word_t carry = 0;
@@ -525,12 +524,12 @@
 	}
 	uECC_vli_rshift1(uv);
 	if (carry) {
-		uv[num_words - 1] |= HIGH_BIT_SET;
+		uv[NUM_ECC_WORDS - 1] |= HIGH_BIT_SET;
 	}
 }
 
 void uECC_vli_modInv(uECC_word_t *result, const uECC_word_t *input,
-		     const uECC_word_t *mod, wordcount_t num_words)
+		     const uECC_word_t *mod)
 {
 	uECC_word_t a[NUM_ECC_WORDS], b[NUM_ECC_WORDS];
 	uECC_word_t u[NUM_ECC_WORDS], v[NUM_ECC_WORDS];
@@ -549,10 +548,10 @@
 	while ((cmpResult = uECC_vli_cmp_unsafe(a, b)) != 0) {
 		if (EVEN(a)) {
 			uECC_vli_rshift1(a);
-      			vli_modInv_update(u, mod, num_words);
+      			vli_modInv_update(u, mod);
     		} else if (EVEN(b)) {
 			uECC_vli_rshift1(b);
-			vli_modInv_update(v, mod, num_words);
+			vli_modInv_update(v, mod);
 		} else if (cmpResult > 0) {
 			uECC_vli_sub(a, a, b);
 			uECC_vli_rshift1(a);
@@ -560,7 +559,7 @@
         			uECC_vli_add(u, u, mod);
       			}
       			uECC_vli_sub(u, u, v);
-      			vli_modInv_update(u, mod, num_words);
+      			vli_modInv_update(u, mod);
     		} else {
       			uECC_vli_sub(b, b, a);
       			uECC_vli_rshift1(b);
@@ -568,7 +567,7 @@
         			uECC_vli_add(v, v, mod);
       			}
       			uECC_vli_sub(v, v, u);
-      			vli_modInv_update(v, mod, num_words);
+      			vli_modInv_update(v, mod);
     		}
   	}
   	uECC_vli_set(result, u);
@@ -892,7 +891,7 @@
 	uECC_vli_modSub(z, Rx[1], Rx[0], curve->p); /* X1 - X0 */
 	uECC_vli_modMult_fast(z, z, Ry[1 - nb]); /* Yb * (X1 - X0) */
 	uECC_vli_modMult_fast(z, z, point); /* xP * Yb * (X1 - X0) */
-	uECC_vli_modInv(z, z, curve->p, num_words); /* 1 / (xP * Yb * (X1 - X0))*/
+	uECC_vli_modInv(z, z, curve->p); /* 1 / (xP * Yb * (X1 - X0))*/
 	/* yP / (xP * Yb * (X1 - X0)) */
 	uECC_vli_modMult_fast(z, z, point + num_words);
 	/* Xb * yP / (xP * Yb * (X1 - X0)) */
diff --git a/tinycrypt/ecc_dsa.c b/tinycrypt/ecc_dsa.c
index 09b2b84..b3a08cf 100644
--- a/tinycrypt/ecc_dsa.c
+++ b/tinycrypt/ecc_dsa.c
@@ -143,7 +143,7 @@
 	/* Prevent side channel analysis of uECC_vli_modInv() to determine
 	bits of k / the private key by premultiplying by a random number */
 	uECC_vli_modMult(k, k, tmp, curve->n); /* k' = rand * k */
-	uECC_vli_modInv(k, k, curve->n, num_n_words);       /* k = 1 / k' */
+	uECC_vli_modInv(k, k, curve->n);       /* k = 1 / k' */
 	uECC_vli_modMult(k, k, tmp, curve->n); /* k = 1 / k */
 
 	uECC_vli_nativeToBytes(signature, curve->num_bytes, p); /* store r */
@@ -242,7 +242,7 @@
 	}
 
 	/* Calculate u1 and u2. */
-	uECC_vli_modInv(z, s, curve->n, num_n_words); /* z = 1/s */
+	uECC_vli_modInv(z, s, curve->n); /* z = 1/s */
 	u1[num_n_words - 1] = 0;
 	bits2int(u1, message_hash, hash_size, curve);
 	uECC_vli_modMult(u1, u1, z, curve->n); /* u1 = e/s */
@@ -255,7 +255,7 @@
 	uECC_vli_set(ty, curve->G + num_words);
 	uECC_vli_modSub(z, sum, tx, curve->p); /* z = x2 - x1 */
 	XYcZ_add(tx, ty, sum, sum + num_words, curve);
-	uECC_vli_modInv(z, z, curve->p, num_words); /* z = 1/z */
+	uECC_vli_modInv(z, z, curve->p); /* z = 1/z */
 	apply_z(sum, sum + num_words, z);
 
 	/* Use Shamir's trick to calculate u1*G + u2*Q */
@@ -289,7 +289,7 @@
 		}
   	}
 
-	uECC_vli_modInv(z, z, curve->p, num_words); /* Z = 1/Z */
+	uECC_vli_modInv(z, z, curve->p); /* Z = 1/Z */
 	apply_z(rx, ry, z);
 
 	/* v = x1 (mod n) */
