diff --git a/cdr/cdr_csv.c b/cdr/cdr_csv.c
index f5ee32e1666fc27cd61277034ac3bb3433b73a55..ed69a8f8ee0d087a0707863e07637848e0508d4c 100644
--- a/cdr/cdr_csv.c
+++ b/cdr/cdr_csv.c
@@ -198,6 +198,24 @@ static int append_int(char *buf, int s, size_t bufsize)
 	return 0;
 }
 
+static int append_unsigned_int(char *buf, unsigned int s, size_t bufsize)
+{
+	char tmp[32];
+	int pos = strlen(buf);
+
+	snprintf(tmp, sizeof(tmp), "%lu", s);
+
+	if (pos + strlen(tmp) > bufsize - 3)
+		return -1;
+
+	strncat(buf, tmp, bufsize - strlen(buf) - 1);
+	pos = strlen(buf);
+	buf[pos++] = ',';
+	buf[pos++] = '\0';
+
+	return 0;
+}
+
 static int append_date(char *buf, struct timeval when, size_t bufsize)
 {
 	char tmp[80] = "";
@@ -252,7 +270,7 @@ static int build_csv_record(char *buf, size_t bufsize, struct ast_cdr *cdr)
 	/* Disposition */
 	append_string(buf, ast_cdr_disp2str(cdr->disposition), bufsize);
 	/* SessionId */
-	append_int(buf, cdr->sessionId, bufsize);
+	append_unsigned_int(buf, cdr->sessionId, bufsize);
 	/* SIPSessionID */
 	append_string(buf, cdr->SIPSessionID, bufsize);
 	/* SIP IP Address */
diff --git a/include/asterisk/cdr.h b/include/asterisk/cdr.h
index ffdeaddb6b0090a7bc5b3d2e26f0890ec8528533..afec3e5c9397ad46044da1a670785d4bcb3af318 100644
--- a/include/asterisk/cdr.h
+++ b/include/asterisk/cdr.h
@@ -349,7 +349,7 @@ struct ast_cdr {
 	/*! Sequence field */
 	int sequence;
 	/*! SessionId */
-	int sessionId;
+	unsigned int sessionId;
 	/*! SIPSessionID */
 	char SIPSessionID[33];
 	/*! sipIpAddress */
diff --git a/main/cdr.c b/main/cdr.c
index 7120708b6b6a6a82d1aeb3a24d3faa41c4b360fc..bdecd4f6a362e74269272d89212b3f8d6c067faa 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -3174,7 +3174,7 @@ void ast_cdr_format_var(struct ast_cdr *cdr, const char *name, char **ret, char
 	} else if ((varbuf = cdr_format_var_internal(cdr, name))) {
 		ast_copy_string(workspace, varbuf, workspacelen);
 	} else if (!strcasecmp(name, "sessionId")) {
-		snprintf(workspace, workspacelen, "%ld", cdr->sessionId);
+		snprintf(workspace, workspacelen, "%lu", cdr->sessionId);
 	} else if (!strcasecmp(name, "SIPSessionID")) {
 		ast_copy_string(workspace, cdr->SIPSessionID, workspacelen);
 	} else if (!strcasecmp(name, "sipIpAddress")) {