GOIP Outgoing trunk behind NAT, not updating global IP

I have a GOIP behind ADSL router and using dyndns to update the goip address for asterisk. router is assigning the same port every time so I never had any one way audio issues.

Incoming works fine but when ADSL IP changes its up asterisk outgoing trunk is keeping the old IP instead of the new one but I am amazed the the incoming trunk keeps updating its IP.
Is there a way to push Asterisk to keep updating the host IP using the domain name for outgoing trunk?

In order to solve this I always do the Asterisk restart

Asterisk CLI shows outgoing trunk is keeping the old IP while inbound trunk has an updated IP.
Using "Asterisk 11.4.0"
SIP SHOW PEERS

GOIP1/goip_1 XX.XX.141.109 N 1244 UNREACHABLE
goip_1/goip_1 XX.XX.220.95 D N 1244 OK (357 ms)

I have tried Peer and friend both but still the same.

GOIP Asterisk Trunk settings

Here are the settings for outgoing

host=XXX.dyndns.org
port=1244
type=peer
dtmfmode=rfc2833
insecure=port,invite
qualify=yes
context=from-internal
nat=yes

for incoming
secret=XXXXXXXXX
dtmfmode=rfc2833
canreinvite=no
host=dynamic
type=friend
qualify=yes
context=from-internal
insecure=very

GOIP Seetings
End Point Type = SIP Phone
Single Server mode

based on the following model
samyantoun.50webs.com/asterisk/goip/

Make Your config easierer by just putting the configuration together in one config_context aka

[GOIP] type=peer secret=XXXXXXXXX insecure=port,invite dtmfmode=rfc2833 canreinvite=no host=dynamic qualify=yes nat=yes context=from-internal

This shoudl work in both directions (in and out)

canreinvite is deprecated (use directmedia). remotesecret is probably better than insecure=invite. Are you sure you need insecure=port?