- Fixed error codes. Negative when needed (SSL error codes). Non-negative if error-codes are OR'ed to other error codes (ASN1, Base64, MPI, DHM). The rest is negative by default. 

diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index fa75557..3868505 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -35,33 +35,33 @@
 /*
  * SSL Error codes
  */
-#define POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE               0x1000
-#define POLARSSL_ERR_SSL_BAD_INPUT_DATA                    0x1800
-#define POLARSSL_ERR_SSL_INVALID_MAC                       0x2000
-#define POLARSSL_ERR_SSL_INVALID_RECORD                    0x2800
-#define POLARSSL_ERR_SSL_INVALID_MODULUS_SIZE              0x3000
-#define POLARSSL_ERR_SSL_UNKNOWN_CIPHER                    0x3800
-#define POLARSSL_ERR_SSL_NO_CIPHER_CHOSEN                  0x4000
-#define POLARSSL_ERR_SSL_NO_SESSION_FOUND                  0x4800
-#define POLARSSL_ERR_SSL_NO_CLIENT_CERTIFICATE             0x5000
-#define POLARSSL_ERR_SSL_CERTIFICATE_TOO_LARGE             0x5800
-#define POLARSSL_ERR_SSL_CERTIFICATE_REQUIRED              0x6000
-#define POLARSSL_ERR_SSL_PRIVATE_KEY_REQUIRED              0x6800
-#define POLARSSL_ERR_SSL_CA_CHAIN_REQUIRED                 0x7000
-#define POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE                0x7800
-#define POLARSSL_ERR_SSL_FATAL_ALERT_MESSAGE               0x8000
-#define POLARSSL_ERR_SSL_PEER_VERIFY_FAILED                0x8800
-#define POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY                 0x9000
-#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_HELLO               0x9800
-#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO               0xA000
-#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE                0xA800
-#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST        0xB000
-#define POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE        0xB800
-#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO_DONE          0xC000
-#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE        0xC800
-#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY         0xD000
-#define POLARSSL_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC         0xD800
-#define POLARSSL_ERR_SSL_BAD_HS_FINISHED                   0xE000
+#define POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE               -0x1000
+#define POLARSSL_ERR_SSL_BAD_INPUT_DATA                    -0x1800
+#define POLARSSL_ERR_SSL_INVALID_MAC                       -0x2000
+#define POLARSSL_ERR_SSL_INVALID_RECORD                    -0x2800
+#define POLARSSL_ERR_SSL_INVALID_MODULUS_SIZE              -0x3000
+#define POLARSSL_ERR_SSL_UNKNOWN_CIPHER                    -0x3800
+#define POLARSSL_ERR_SSL_NO_CIPHER_CHOSEN                  -0x4000
+#define POLARSSL_ERR_SSL_NO_SESSION_FOUND                  -0x4800
+#define POLARSSL_ERR_SSL_NO_CLIENT_CERTIFICATE             -0x5000
+#define POLARSSL_ERR_SSL_CERTIFICATE_TOO_LARGE             -0x5800
+#define POLARSSL_ERR_SSL_CERTIFICATE_REQUIRED              -0x6000
+#define POLARSSL_ERR_SSL_PRIVATE_KEY_REQUIRED              -0x6800
+#define POLARSSL_ERR_SSL_CA_CHAIN_REQUIRED                 -0x7000
+#define POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE                -0x7800
+#define POLARSSL_ERR_SSL_FATAL_ALERT_MESSAGE               -0x8000
+#define POLARSSL_ERR_SSL_PEER_VERIFY_FAILED                -0x8800
+#define POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY                 -0x9000
+#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_HELLO               -0x9800
+#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO               -0xA000
+#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE                -0xA800
+#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST        -0xB000
+#define POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE        -0xB800
+#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO_DONE          -0xC000
+#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE        -0xC800
+#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY         -0xD000
+#define POLARSSL_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC         -0xD800
+#define POLARSSL_ERR_SSL_BAD_HS_FINISHED                   -0xE000
 
 /*
  * Various constants