rendered paste body [macro-snap-catch]
exten => s, 1, GotoIf($["${CALLERID(num)}"!=""]?2:11);
exten => s, 2, GotoIf($[${ISNULL(${DB(${CALLERID(num)}/ForwardLimit)})}=1]?11:3);
exten => s, 3, GotoIf($[${DB(${CALLERID(num)}/ForwardLimit)}!=0]?4:11);
exten => s, 4, GotoIf($[${DB(${CALLERID(num)}/ForwardUntil)}<${EPOCH}]?5:11);
exten => s, 5, NoOp(Call caught);
exten => s, 6, GotoIf($[${DB(${CALLERID(num)}/ForwardLimit)} != -1] ? 7 : 10);
exten => s, 7, Set(newlimit=$[${DB(${CALLERID(num)}/ForwardLimit)} - 1]);
exten => s, 8, Set(DB(${CALLERID(num)}/ForwardLimit)=${newlimit})
exten => s, 9, Set(channel=${DB(${DB(${CALLERID(num)}/ForwardTo)}/Channel)})
exten => s, 10, Dial(${channel},14,tT);