Why does cetz count this intersection double?

This is something I noticed by accident.
The intersection intersections(“i0”,“c0”,“l0”) has two anchors in the point (0,0)

#cetz.canvas({
  import cetz.draw:*
  let step = 1 // Zet deze gerust hoger om het effect te zien!
  let r = 0.9
  let teta = 10deg 
  
  line((-1,0), (13,0), stroke:(dash:(10pt,2pt)), name:"l1")
  line((180deg+teta,1), (teta,13), stroke:(dash:(10pt,2pt)), name:"l0")
  
  let w = (r,0)
  line((0,0), w, stroke:2pt)
  
 
  for j in range(step) {
    let index = calc.rem(j, 2)
    
    
    let c-naam = "c" + str(j)
    let i-prefix = "i" + str(j)
    let l-naam = "l" + str(index)
    
   
      
      circle(w, radius: r, stroke: (thickness: 0.5pt, dash: "dashed"), name: c-naam)
      
      
      intersections(i-prefix, c-naam, l-naam)
      
      
      line(w, i-prefix + ".2", stroke:2pt)
      
     
      for-each-anchor(i-prefix, (name) => {
        content(i-prefix + "." + name,[#name],anchor:"south",padding:int(name)+.11)
      })
    w = i-prefix + ".2"
  }
})

It’s a bug that happens because two of the four bezier curves that form the circle touch the line at their start/end point.

Edit: I opened a PR here Deduplicate Path Intersection Points by johannes-wolf · Pull Request #1137 · cetz-package/cetz · GitHub.

Here is another one, in this case no intersection, but the circles “c1” and “c2” should have exactly one point in common. I have noticed before, when I used tangent (see manual) to draw a tangent to a circle that there is no intersection.

#let donkerblauw = rgb("1434A4") 
#cetz.canvas({
import cetz.draw:*
let mu = 2
let b= 2.1
let c= 1.9
let A = (0,0)
let E = (-30deg,2*mu)
line(A,E,stroke:(thickness:0.5pt,paint:donkerblauw,dash:"densely-dashed"))
circle(A,radius:b,name:"c1",stroke:blue)
circle(E,radius:c,name:"c2",stroke:blue)
intersections("i","c1","c2")
let C= "i.0"
let Del = (A,50%,E)
line(C,E,stroke:(thickness:0.5pt,paint:donkerblauw,dash:"densely-dashed"))
line-to-points(C,C,(A,50%,E),0deg,2,name:"zijde1",stroke:donkerblauw)
line("zijde1.end",A,stroke:donkerblauw)
line(A,C,stroke:donkerblauw)
circle(C,radius:1pt,fill:white)
circle(Del,radius:1pt,fill:white)
circle(A,radius:1pt,fill:white)
circle(E,radius:1pt,fill:white)
content(A,[$A$],anchor:"south-east",padding:0.1)
content(C,[$Gamma$],anchor:"west",padding:0.1)
content(E,[$E$],anchor:"north-west",padding:0.1)
content(Del,[$Delta$],anchor:"north",padding:0.1)
content((C,200%,Del),$B$,anchor:"north-east",padding:0.1)
})