Dual WAN Script : 1 main channel + 1 reserve problem

Hello,

I have RB2011UAS-2HnD. Two Wan connected: 1st - ether1, 2nd - ether10

I have script which run each minute:

#www.ru
:local PingTarget1 194.87.0.50
#ya.ru
:local PingTarget2 87.250.250.203
#google dns
:local PingTarget3 8.8.8.8

#Check main internet connection
:local MainIfInetOk false;
:local PingResult1 [/ping $PingTarget1 count=3 interface=ether1]
:local PingResult2 [/ping $PingTarget2 count=3 interface=ether1]
:local PingResult3 [/ping $PingTarget3 count=3 interface=ether1]
:set MainIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= 6)
:put "MainIfInetOk=$MainIfInetOk"

:local MainGWDistance [/ip route get [find comment="MainGW"] distance]
:put "MainGWDistance=$MainGWDistance"

if ($MainIfInetOk && ($MainGWDistance != 1)) do={
/ip route set [find comment="MainGW"] distance=1
/log info "Switch to main internet connection"
}

if (!$MainIfInetOk && ($MainGWDistance != 3)) do={
/ip route set [find comment="MainGW"] distance=3
/log warning "Switch to reserve internet connection"
}

I have two routes in routing table MainGW with distance 1, RsrvGW distance 2. Idea is :
when main channel is down then script change distance on MainGW to 3 and thus RsrvGW becomes active. And when Main Channel is back change distance to 1 to activate main GW.

Problem is when Main channel down for any reason. For example ISP down, cable is unplugged. After it came up. /ping 8.8.8.8 interface=ether1 doesn’t work untill i change distance of MainGw to 1.

What to do?
How to fix this problem?