diff --git a/main/callerid.c b/main/callerid.c
index d9f74180a93b850027b4b00121e10e5293ae2efe..4d493589cbde949b50479c989d412b7f994bd1c6 100644
--- a/main/callerid.c
+++ b/main/callerid.c
@@ -621,7 +621,7 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, stru
 				}
 				break;
 			case 5: /* Check checksum */
-				if (b != (256 - (cid->cksum & 0xff))) {
+				if ((b + cid->cksum) & 0xff)) {
 					ast_log(LOG_NOTICE, "Caller*ID failed checksum\n");
 					/* Try again */
 					cid->sawflag = 0;