This is your O2 version. I wasn't able to reproduce the same effect either with j_drawcircle or j_drawoval functions.
This is my hack running under SB on Linux using JAPI.
IMPORT japi.bas
j_start
win = j_frame("Chaos Natural")
can = j_canvas(win, 800, 600)
j_pack(win)
j_show(win)
WHILE obj <> win
j_setcolorbg(can, 0, 0, 255)
FOR t = 0 TO 4 STEP .01
xp = 120 * COS(t * 2)
yp = 120 * SIN(t * 2)
zp = a * SIN(t * 16) + 100
xs = (300 + xp * 320 \ 160)
ys = (300 - yp * 320 \ 160)
j_setcolor(can, 228, 228, 228)
j_drawcircle(can, 120 + xs, ys, zp - 150)
NEXT
a += 1
IF a >= 300 THEN a = -a
j_sleep(50)
obj = j_getaction()
WEND
j_quit()