diff --git a/ChangeLog b/ChangeLog
index c99ba251cf09cb8c95dee8e153b6ad4949035cae..10381aa67c956a3073904abec22d8ac16b9d5dc4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-23  Niels Möller  <nisse@lysator.liu.se>
+
+	* nettle-internal.h (NETTLE_MAX_BIGNUM_SIZE): New constant. Based
+	on NETTLE_MAX_BIGNUM_BITS, rounded upwards. Replaced all uses of
+	NETTLE_MAX_BIGNUM_BITS.
+
 2012-04-19  Niels Möller  <nisse@lysator.liu.se>
 
 	* list-obj-sizes.awk: Use decimal rather than hexadecimal output.
diff --git a/bignum-random.c b/bignum-random.c
index 6a93a5ab6fdbc67c6989cb37b2b875a3269a1227..6b745d88bbae7be72e57af649b4773a252133aa2 100644
--- a/bignum-random.c
+++ b/bignum-random.c
@@ -38,7 +38,7 @@ nettle_mpz_random_size(mpz_t x,
 		       unsigned bits)
 {
   unsigned length = (bits + 7) / 8;
-  TMP_DECL(data, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(data, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(data, length);
 
   random(ctx, length, data);
diff --git a/nettle-internal.h b/nettle-internal.h
index 888223932008b5a42e58a160552b930ea12571dd..f1a904291dbed374189d8f99b6c10c23b7506aa3 100644
--- a/nettle-internal.h
+++ b/nettle-internal.h
@@ -45,6 +45,7 @@ do { if (size > (sizeof(name) / sizeof(name[0]))) abort(); } while (0)
 
 /* Arbitrary limits which apply to systems that don't have alloca */
 #define NETTLE_MAX_BIGNUM_BITS 10000
+#define NETTLE_MAX_BIGNUM_SIZE ((NETTLE_MAX_BIGNUM_BITS + 7)/8)
 #define NETTLE_MAX_HASH_BLOCK_SIZE 128
 #define NETTLE_MAX_HASH_DIGEST_SIZE 64
 #define NETTLE_MAX_SEXP_ASSOC 17
diff --git a/pkcs1-decrypt.c b/pkcs1-decrypt.c
index bd21f88b3c1cd24a7cf02c014b71d5f71c55f2cb..eb003528e296802d0eb1e03a5ee6e00f54105e3e 100644
--- a/pkcs1-decrypt.c
+++ b/pkcs1-decrypt.c
@@ -38,11 +38,11 @@ pkcs1_decrypt (unsigned key_size,
 	       const mpz_t m,
 	       unsigned *length, uint8_t *message)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   uint8_t *terminator;
   unsigned padding;
   unsigned message_length;
-  
+
   TMP_ALLOC(em, key_size);
   nettle_mpz_get_str_256(key_size, em, m);
 
diff --git a/pkcs1-rsa-md5.c b/pkcs1-rsa-md5.c
index b7980e7dff45894f66d3f6640d106482849ea48a..8284f4f244b904e115dbb2619fe94ffbb2eb42db 100644
--- a/pkcs1-rsa-md5.c
+++ b/pkcs1-rsa-md5.c
@@ -64,7 +64,7 @@ md5_prefix[] =
 int
 pkcs1_rsa_md5_encode(mpz_t m, unsigned size, struct md5_ctx *hash)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
@@ -83,7 +83,7 @@ pkcs1_rsa_md5_encode(mpz_t m, unsigned size, struct md5_ctx *hash)
 int
 pkcs1_rsa_md5_encode_digest(mpz_t m, unsigned size, const uint8_t *digest)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
diff --git a/pkcs1-rsa-sha1.c b/pkcs1-rsa-sha1.c
index 656bba0508353231dac11a8aad449213081d314f..78143a770ead26c0c4a96ee1b6a02a44cd135e29 100644
--- a/pkcs1-rsa-sha1.c
+++ b/pkcs1-rsa-sha1.c
@@ -64,7 +64,7 @@ sha1_prefix[] =
 int
 pkcs1_rsa_sha1_encode(mpz_t m, unsigned size, struct sha1_ctx *hash)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
@@ -83,7 +83,7 @@ pkcs1_rsa_sha1_encode(mpz_t m, unsigned size, struct sha1_ctx *hash)
 int
 pkcs1_rsa_sha1_encode_digest(mpz_t m, unsigned size, const uint8_t *digest)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
diff --git a/pkcs1-rsa-sha256.c b/pkcs1-rsa-sha256.c
index a374768b5d7ab2bd7e5ec219a62239eca0d60395..a02a3e9529199e1c11e92487014ccc1045b2e682 100644
--- a/pkcs1-rsa-sha256.c
+++ b/pkcs1-rsa-sha256.c
@@ -62,7 +62,7 @@ sha256_prefix[] =
 int
 pkcs1_rsa_sha256_encode(mpz_t m, unsigned size, struct sha256_ctx *hash)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
@@ -81,7 +81,7 @@ pkcs1_rsa_sha256_encode(mpz_t m, unsigned size, struct sha256_ctx *hash)
 int
 pkcs1_rsa_sha256_encode_digest(mpz_t m, unsigned size, const uint8_t *digest)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
diff --git a/pkcs1-rsa-sha512.c b/pkcs1-rsa-sha512.c
index fd58999c8be55a9d50ad06d25ab441d2422193d8..df7520e5224760847886ee7c6b8b7ff8ff5e0493 100644
--- a/pkcs1-rsa-sha512.c
+++ b/pkcs1-rsa-sha512.c
@@ -62,7 +62,7 @@ sha512_prefix[] =
 int
 pkcs1_rsa_sha512_encode(mpz_t m, unsigned size, struct sha512_ctx *hash)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
@@ -82,7 +82,7 @@ pkcs1_rsa_sha512_encode(mpz_t m, unsigned size, struct sha512_ctx *hash)
 int
 pkcs1_rsa_sha512_encode_digest(mpz_t m, unsigned size, const uint8_t *digest)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   TMP_ALLOC(em, size);
 
   if (pkcs1_signature_prefix(size, em,
diff --git a/rsa-encrypt.c b/rsa-encrypt.c
index fb346db751397be3c288b1b507960631c4b0ef9c..29523fcbd93dee2c5ebf73fb27e4cbd8d70ed126 100644
--- a/rsa-encrypt.c
+++ b/rsa-encrypt.c
@@ -43,7 +43,7 @@ rsa_encrypt(const struct rsa_public_key *key,
 	    unsigned length, const uint8_t *message,
 	    mpz_t gibbberish)
 {
-  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_BITS / 8);
+  TMP_DECL(em, uint8_t, NETTLE_MAX_BIGNUM_SIZE);
   unsigned padding;
   unsigned i;