diff --git a/cdr.c b/cdr.c
index cedc4796420c514bdd876bc61a4176d995e0c3f6..7837f03ee2870f17f2f57e49014024bfc8998b36 100644
--- a/cdr.c
+++ b/cdr.c
@@ -691,12 +691,15 @@ int ast_cdr_setaccount(struct ast_channel *chan, const char *account)
 
 int ast_cdr_setamaflags(struct ast_channel *chan, const char *flag)
 {
-	struct ast_cdr *cdr = chan->cdr;
+	struct ast_cdr *cdr;
 	int newflag;
 
 	newflag = ast_cdr_amaflags2int(flag);
-	if (newflag)
-		cdr->amaflags = newflag;
+	if (newflag) {
+		for (cdr = chan->cdr; cdr; cdr = cdr->next) {
+			cdr->amaflags = newflag;
+		}
+	}
 
 	return 0;
 }