diff --git a/main/callerid.c b/main/callerid.c
index db5e795ff061435e3a651c9fefd84d90b24cf2b3..849579ec8f17675673ca5b287311243689836288 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;