I didn’t study the code too closely so this suggestion may be wrong.
How about chaging the type from MouseDown Coordinate to MouseDown Int Coordinate?
Than, in the function that create the circle you can use it this way: onMouseDown (MouseDown id) where id is some integer that you pass to that function. This integer will be then available in the update function.
If I try to “parametrize” event with onMouseDown MouseDown id which would be elegant solution, I get The function 'onMouseDown' expects 1 arguments, but got 2 instead