diff --git a/apps/app_privacy.c b/apps/app_privacy.c
index eb722e5a3a22f50c45df7d3026f2901cb85158cb..00af9fc2730a398fbd4d95fa4792307636a26ae7 100644
--- a/apps/app_privacy.c
+++ b/apps/app_privacy.c
@@ -189,13 +189,21 @@ static int privacy_exec (struct ast_channel *chan, void *data)
 		}
 		
 		/*Got a number, play sounds and send them on their way*/
-		if ((retries < maxretries) && !res ) {
+		if ((retries < maxretries) && res >= 0 ) {
 			res = ast_streamfile(chan, "privacy-thankyou", chan->language);
 			if (!res)
 				res = ast_waitstream(chan, "");
-			ast_set_callerid (chan, phone, "Privacy Manager", NULL);
-			if (option_verbose > 2)
-				ast_verbose (VERBOSE_PREFIX_3 "Changed Caller*ID to %s\n",phone);
+
+			ast_set_callerid (chan, phone, "Privacy Manager", NULL); 
+
+			/* Clear the unavailable presence bit so if it came in on PRI
+			 * the caller id will now be passed out to other channels
+			 */
+			chan->cid.cid_pres &= (AST_PRES_UNAVAILABLE ^ 0xFF);
+
+			if (option_verbose > 2) {
+				ast_verbose (VERBOSE_PREFIX_3 "Changed Caller*ID to %s, callerpres to %d\n",phone,chan->cid.cid_pres);
+			}
 			pbx_builtin_setvar_helper(chan, "PRIVACYMGRSTATUS", "SUCCESS");
 		} else {
 			if (priority_jump || ast_opt_priority_jumping)