@ВeekeeCZ your Filletgrreadprogram is pretty cool. Although I do not follow all of the code I can get a feel for the challenges you faced. I was not aware of the grread function but have seen the results in some of Lee Mac's programs.
As for filleting between arcs I like to use a numerical solution as it is easy to define which of the two intersection points between two arcs that you want to find (or line and arc).
I used the technique in post #8 of this thread.
Here's the code for the intersection of two circles.
; calculate the intersection point of two circles that is
; closest to a bias point.
(defun circleintr (cenA rA cenB rB biaspt / tol uA guess1 uB guess2 d i ans)
(setq tol 0.0001) ; set tolerance for intersection point
(setq uA (uvec cenA biaspt)
guess1 (mapcar '+ cenA (mapcar '* uA (list rA ra rA)))
uB (uvec cenB guess1)
)
(setq guess2
(mapcar '+ cenB (mapcar '* uB (list rB rB rB)))
)
(setq d (distance guess1 guess2))
(setq i 0)
(while (and (> d tol) (< i 21)) ; limit to 20 iterations
(setq uA (uvec cenA guess2)
guess1 (mapcar '+ cenA (mapcar '* uA (list rA ra rA)))
uB (uvec cenB guess1)
)
(setq guess2
(mapcar '+ cenB (mapcar '* uB (list rB rB rB)))
)
(setq i (+ i 1))
(setq d (distance guess1 guess2))
) ; end while
(if (> i 20)
(setq ans nil)
(setq ans guess2)
)
)
The function finds the intersection of two circles closest to a bias point. The circles have centers at cenA and cenB , the radii are rA and rB .
The program finds the intersection of a line (red) from bias point to cenA with circle 1. This is guess1. The intersection of a line through guess1 and cenB with circle 2 is guess2. A guess1 is redefined as the intersection of a line passing through guess2 and cenA on circle 1. The process is repeated until the distance between successive points guess1 and guess2 is less than a specified tolerance. The process usually converges in only a few iterations. I set a limit of 20 iterations. More could be done for error checking for example checking if the 2 circles actually intersect. (< (+ rA rB) (distance cenA cenB)). For a line and an arc I would find guess1 in the same manner put then use the projection of guess1 onto the line to define guess2. This process would also converge to a solution very quickly.
Of course you could fins intersections analytically but that is less intuitive and less clean for me.

lee.minardi