A more complete answer:
You are looping while (x<=y). that means that the last iteration is when x == y. but x == y only on the diagonal so that is where you stop:
x------------
-x--ooooo----
--xo-----o---
---x---------
----x--------
-----x-------
------x------
-------x-----
--------x----
---------x---
---o-----ox--
----ooooo--x-
------------x
You are not iterating on the circle, you are only iterating on a line (x), and you calculate top and bottom y's.
Note that there are only two y's for every x and, near the end, you would need more y's for every x. This is why you need to iterate again but this time on a column (y) and calculate two x's for every y, basically switching x and y in the above algorithm.