diff --git a/main/cdr.c b/main/cdr.c
index 5e24075029ce799231fd90007379e07c0aebb5bf..5471779621e87e4ae322ab11b0d2bf81d881cd53 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -2976,7 +2976,7 @@ int ast_cdr_setvar(const char *channel_name, const char *name, const char *value
 		for (it_cdr = cdr; it_cdr; it_cdr = it_cdr->next) {
 			struct varshead *headp = NULL;
 
-			if (it_cdr->fn_table == &finalized_state_fn_table) {
+			if (it_cdr->fn_table == &finalized_state_fn_table && it_cdr->next != NULL) {
 				continue;
 			}
 			if (!strcasecmp(channel_name, it_cdr->party_a.snapshot->name)) {