diff --git a/ChangeLog b/ChangeLog
index 6171c7a1c8acf250002abc67f4e4f82520bc9957..7829ae3cfc93e5933e8c54592829c8c56a12ae6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-02-27  Niels Möller  <nisse@lysator.liu.se>
 
+	* ecc-384.c (ecc_384_modp): Fixed typo which broke carry handling
+	in the 64-bit version.
+
 	* examples/ecc-benchmark.c (bench_add_jjj): Typo fix, benchmark
 	the right function.
 
diff --git a/ecc-384.c b/ecc-384.c
index dc91f320fee82092568d4e2e25e0f73b4f0e9243..6595b1524d114b5b0c4f41f5873dc865cf526c30 100644
--- a/ecc-384.c
+++ b/ecc-384.c
@@ -114,7 +114,7 @@ ecc_384_modp (const struct ecc_curve *ecc, mp_limb_t *rp)
   /* Reduce from 9 to 6 limbs */
   tp[0] = 0;
   mpn_copyi (tp + 1, rp + 6, 2);
-  tp[3] = rp[8] -= mpn_sub_n (tp, tp, rp + 6, 3);
+  tp[3] = rp[8] - mpn_sub_n (tp, tp, rp + 6, 3);
   tp[4] = mpn_lshift (tp, tp, 4, 32);
 
   cy = mpn_add_n (rp, rp, rp + 6, 3);