diff --git a/channels/chan_local.c b/channels/chan_local.c
index cc48b303d371ed1b5b2e18de7175356b906ef4f8..5318796da1aa60dfc32fbdaf32a460f761b1de48 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -505,11 +505,15 @@ static int local_call(struct ast_channel *ast, char *dest, int timeout)
 	 * Note that cid_num and cid_name aren't passed in the ast_channel_alloc
 	 * call, so it's done here instead.
 	 */
+	p->chan->cid.cid_dnid = ast_strdup(p->owner->cid.cid_dnid);
 	p->chan->cid.cid_num = ast_strdup(p->owner->cid.cid_num);
 	p->chan->cid.cid_name = ast_strdup(p->owner->cid.cid_name);
 	p->chan->cid.cid_rdnis = ast_strdup(p->owner->cid.cid_rdnis);
 	p->chan->cid.cid_ani = ast_strdup(p->owner->cid.cid_ani);
 	p->chan->cid.cid_pres = p->owner->cid.cid_pres;
+	p->chan->cid.cid_ani2 = p->owner->cid.cid_ani2;
+	p->chan->cid.cid_ton = p->owner->cid.cid_ton;
+	p->chan->cid.cid_tns = p->owner->cid.cid_tns;
 	ast_string_field_set(p->chan, language, p->owner->language);
 	ast_string_field_set(p->chan, accountcode, p->owner->accountcode);
 	ast_cdr_update(p->chan);