I found some old code for drawing better circles, with some editing we now have perfect hollow and filled circles and ellipses.

`Better Circles by OBese87
`19/08/09 - 31/05/2012
set window on
set display mode 1024,768,32
sync on:sync rate 0
ink -2,0
set text opaque
do
oldlc = newlc
newlc = (mouseclick()=1)
oldrc = newrc
newrc = (mouseclick()=2)
if newlc>oldlc then mode=1-mode
if newrc>oldrc then kind=1-kind
rx = abs(mousex()-512)
ry = abs(mousey()-384)
r = (rx^2+ry^2)^0.5
if r>0
if kind=0
if mode=0 then hcircle(512,384,r) else fcircle(512,384,r)
else
if mode=0 then hellipse(512,384,rx,ry) else fellipse(512,384,rx,ry)
endif
endif
text 20,20,"Move the mouse..."
text 20,36,"Left click the mouse..."
text 20,52,"Right click the mouse..."
sync:cls
loop
end
rem ===============================================================
rem = Functions
rem ===============================================================
rem obese87's filled circle
function fcircle(x,y,r)
dots=r*6.28
t#=360/(dots+.)
quarter = dots/4
for i = 1 to quarter
u=sin(i*t#)*r
v=cos(i*t#)*r
box x-u,y-v,x+u,y+v
next i
endfunction
`//
rem obese87's hollow circle
Function hcircle(x,y,r)
dots=r*6.28 :`pi2 radians (circle circumference)
t#=360/(dots+.) :`degrees per dot
for i = 1 to dots
u=sin(i*t#)*r
v=cos(i*t#)*r
dot x+u,y+v
next i
Endfunction
`//
rem obese87's filled ellipse
function fellipse(x,y,rw,rh)
if rw>rh then rmax=rw else rmax=rh
dots=rmax*6.28
t#=360/(dots+.)
quarter = dots/4
for i = 1 to quarter
u=sin(i*t#)*rw
v=cos(i*t#)*rh
box x-u,y-v,x+u,y+v
next i
endfunction
`//
rem obese87's hollow ellipse
Function hellipse(x,y,rw,rh)
if rw>rh then rmax=rw else rmax=rh
dots=rmax*6.28
t#=360/(dots+.)
for i = 1 to dots
u=sin(i*t#)*rw
v=cos(i*t#)*rh
dot x+u,y+v
next i
Endfunction
`//