How to override which interface to use for certain IP addresses when using Manual:PCC?

I am using the https://wiki.mikrotik.com/wiki/Manual:PCC example, e.g.

/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2

/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24  action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24  action=accept in-interface=LAN
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
    new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \ 
    new-connection-mark=ISP2_conn
add chain=prerouting  in-interface=LAN connection-mark=no-mark dst-address-type=!local \
    per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn 
add chain=prerouting  in-interface=LAN connection-mark=no-mark dst-address-type=!local \ 
    per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \ 
    new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
    new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1     
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

/ ip firewall nat 
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade

However, I have certain client IP addresses that I would like to force to use ISP1 and some to use ISP2.

How can I do that?

Conceptually two choices.

a. use tables, routes and routing rules ( easy to do for an entire subnet or some users)
b. use mangling to identify such traffic (best if you have large groups of users but not whole subnet ) where firewall address list makes sense, and route accordingly

The following “seems” to work - is my approach correct?

/ip firewall mangle
add chain=prerouting dst-address=192.168.89.0/24  action=accept in-interface=bridge
add chain=prerouting dst-address=192.168.90.0/24  action=accept in-interface=bridge
add chain=prerouting in-interface=wlan_1 connection-mark=no-mark action=mark-connection new-connection-mark=ISP_1_conn
add chain=prerouting in-interface=wlan_2 connection-mark=no-mark action=mark-connection new-connection-mark=ISP_2_conn

add chain=prerouting in-interface=bridge connection-mark=no-mark dst-address-type=!local per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP_1_conn 
add chain=prerouting in-interface=bridge connection-mark=no-mark dst-address-type=!local per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP_2_conn

###############################################################
### Force macbook traffic (aa:aa:aa:aa:aa:aa) to use VF, everything else EE ##
###############################################################

add chain=prerouting src-mac-address=aa:aa:aa:aa:aa:aa in-interface=bridge action=mark-routing new-routing-mark=to_ISP_1
add chain=prerouting src-mac-address=!aa:aa:aa:aa:aa:aa in-interface=bridge action=mark-routing new-routing-mark=to_ISP_2

add chain=prerouting connection-mark=ISP_1_conn in-interface=bridge action=mark-routing new-routing-mark=to_ISP_1
add chain=prerouting connection-mark=ISP_2_conn in-interface=bridge action=mark-routing new-routing-mark=to_ISP_2
add chain=output connection-mark=ISP_1_conn action=mark-routing new-routing-mark=to_ISP_1     
add chain=output connection-mark=ISP_2_conn action=mark-routing new-routing-mark=to_ISP_2