If it helps, this is my config. I have two cable modems, both with dynamic IP's. The script will update the routes when a WAN IP changes.
/ip route
add comment=wan0 distance=50 gateway=x.x.x.x routing-mark=to_WAN0
add comment=wan1 distance=50 gateway=x.x.x.x routing-mark=to_WAN1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=wan0
add action=masquerade chain=srcnat out-interface=wan1
/ip firewall mangle
add action=mark-connection chain=input in-interface=wan0 new-connection-mark=WAN0_conn passthrough=no
add action=mark-connection chain=input in-interface=wan1 new-connection-mark=WAN1_conn passthrough=no
add action=mark-routing chain=output connection-mark=WAN0_conn new-routing-mark=to_WAN0 passthrough=no
add action=mark-routing chain=output connection-mark=WAN1_conn new-routing-mark=to_WAN1 passthrough=no
add action=mark-connection chain=prerouting dst-address-type=!local in-interface-list=lanLinks new-connection-mark=WAN0_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting dst-address-type=!local in-interface-list=lanLinks new-connection-mark=WAN1_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting connection-mark=WAN0_conn in-interface-list=lanLinks new-routing-mark=to_WAN0 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=WAN1_conn in-interface-list=lanLinks new-routing-mark=to_WAN1 passthrough=yes
/system script
add name=pccWanIpUpdate policy=read,write,test source="# Dynamic IP Updater\r\
\n\r\
\n:local wan0name \"wan0\";\r\
\n:local wan1name \"wan1\";\r\
\n:global wan0address;\r\
\n:global wan1address;\r\
\n\r\
\n:local wan0ip [/ip dhcp-client get [find interface=\"\$wan0name\"] value-name=address];\r\
\n:if (\$wan0address != \$wan0ip) do={\r\
\n\t:global wan0address [:pick \$wan0ip 0 [:find \$wan0ip \"/\"]];\r\
\n\t:local wan0gateway [/ip dhcp-client get [find interface=\"\$wan0name\"] value-name=gateway];\r\
\n\t:local wan0temp [/ip address get [find interface=\"\$wan0name\"] value-name=network ]\r\
\n\t:local wan0subnet (\$wan0temp . \"/\" . [:pick \$wan0ip ([:find \$wan0ip \"/\"]+1) [:len \$wan0ip] ] )\r\
\n\t/ip route set [find comment=\"wan0\"] gateway=\$wan0gateway;\r\
\n}\r\n\r\
\n:local wan1ip [/ip dhcp-client get [find interface=\"\$wan1name\"] value-name=address];\r\
\n:if (\$wan1address != \$wan1ip) do={\r\
\n\t:global wan1address [:pick \$wan1ip 0 [:find \$wan1ip \"/\"]];\r\
\n\t:local wan1gateway [/ip dhcp-client get [find interface=\"\$wan1name\"] value-name=gateway];\r\
\n\t:local wan1temp [/ip address get [find interface=\"\$wan1name\"] value-name=network ]\r\
\n\t:local wan1subnet (\$wan1temp . \"/\" . [:pick \$wan1ip ([:find \$wan1ip \"/\"]+1) [:len \$wan1ip] ] )\r\
\n\t/ip route set [find comment=\"wan1\"] gateway=\$wan1gateway;\r\
\n}\r\n"