In this diagram
@startuml
|swimline1|
start
start
repeat
:foo;
|#AntiqueWhite|swimline2|
:bar;
repeat while (OK?) is (no)
-> yes;
|swimline3|
repeat
:baz;
|swimline2|
:bar;
repeat while (OK?) is (no)
-> yes;
stop
@enduml
the loop arrow of the second repeat crosses the arrow from "baz" to "bar2" and goes to the wrong side of the join diamond. There is even an arrow in the middle of the line that ends just on the crossing line which makes the meaning of the crossing less obvious.
In this case it would be better to have the second repeat arrow on the right of "baz". (May be difficult on more complicated diagrams.) At least an arrow coming from the left should end on the left side of the diamond (or the corresponding entity).
The routing in this example is better if I change the order of "swimlane2" and "swimlane3". This is a simplified example, the real diagram is more complex.
Is it possible to change the routing other than re-ordering the swimlanes?
Bodo