diff --git a/include/polarssl/error.h b/include/polarssl/error.h
index ae460142f4..ceea3f0650 100644
--- a/include/polarssl/error.h
+++ b/include/polarssl/error.h
@@ -47,9 +47,9 @@
  * 7 bits - Low level module errors
  *
  * For historical reasons, low-level error codes are divided in even and odd,
- * and even codes were assigned first.
+ * even codes were assigned first, and -1 is reserved for other errors.
  *
- * Low-level module errors (0x0001-0x00FF)
+ * Low-level module errors (0x0002-0x007E, 0x0003-0x007F)
  *
  * Module   Nr  Codes assigned
  * MPI       7  0x0002-0x0010
@@ -75,9 +75,9 @@
  * SHA512    1  0x007A-0x007A
  * PBKDF2    1  0x007C-0x007C
  * RIPEMD160 1  0x007E-0x007E
- * HMAC_DRBG 4  0x0001-0x0007
+ * HMAC_DRBG 4  0x0003-0x0009
  *
- * High-level module nr (3 bits - 0x1...-0x8...)
+ * High-level module nr (3 bits - 0x0...-0x7...)
  * Name      ID  Nr of Errors
  * PEM       1   9
  * PKCS#12   1   4 (Started from top)
diff --git a/include/polarssl/hmac_drbg.h b/include/polarssl/hmac_drbg.h
index 7f30c044c0..a9b4cff723 100644
--- a/include/polarssl/hmac_drbg.h
+++ b/include/polarssl/hmac_drbg.h
@@ -30,12 +30,12 @@
 #include "md.h"
 
 /*
- * ! Same values as ctr_drbg.h !
+ * Error codes
  */
-#define POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED        -0x0001  /**< The entropy source failed. */
 #define POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG              -0x0003  /**< Too many random requested in single call. */
 #define POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG                -0x0005  /**< Input too large (Entropy + additional). */
 #define POLARSSL_ERR_HMAC_DRBG_FILE_IO_ERROR                -0x0007  /**< Read/write error in file. */
+#define POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED        -0x0009  /**< The entropy source failed. */
 
 #if !defined(POLARSSL_CONFIG_OPTIONS)
 #define POLARSSL_HMAC_DRBG_RESEED_INTERVAL   10000   /**< Interval before reseed is performed by default */
diff --git a/library/error.c b/library/error.c
index 4aa167f618..eef05f46a4 100644
--- a/library/error.c
+++ b/library/error.c
@@ -600,14 +600,14 @@ void polarssl_strerror( int ret, char *buf, size_t buflen )
 #endif /* POLARSSL_GCM_C */
 
 #if defined(POLARSSL_HMAC_DRBG_C)
-    if( use_ret == -(POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED) )
-        snprintf( buf, buflen, "HMAC_DRBG - The entropy source failed" );
     if( use_ret == -(POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG) )
         snprintf( buf, buflen, "HMAC_DRBG - Too many random requested in single call" );
     if( use_ret == -(POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG) )
         snprintf( buf, buflen, "HMAC_DRBG - Input too large (Entropy + additional)" );
     if( use_ret == -(POLARSSL_ERR_HMAC_DRBG_FILE_IO_ERROR) )
         snprintf( buf, buflen, "HMAC_DRBG - Read/write error in file" );
+    if( use_ret == -(POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED) )
+        snprintf( buf, buflen, "HMAC_DRBG - The entropy source failed" );
 #endif /* POLARSSL_HMAC_DRBG_C */
 
 #if defined(POLARSSL_MD2_C)