diff --git a/main/cdr.c b/main/cdr.c
index d19f6a8ad228c979ecc21aaa2d4c38e7aff737c5..11dbc56a99e6bd0df448c9b7cd117a5a821c5399 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -848,8 +848,11 @@ int ast_cdr_setamaflags(struct ast_channel *chan, const char *flag)
 	struct ast_cdr *cdr;
 	int newflag = ast_cdr_amaflags2int(flag);
 	if (newflag) {
-		for (cdr = chan->cdr; cdr; cdr = cdr->next)
-			cdr->amaflags = newflag;
+		for (cdr = chan->cdr; cdr; cdr = cdr->next) {
+			if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
+				cdr->amaflags = newflag;
+			}
+		}
 	}
 
 	return 0;