Several people theorized that the squares in the image could be artefacts caused by floating point limitations.

And the answer is ...

Some people implemented my algorithm and got the squares and some got no squares.

Iazid had the idea that the squares could be the result of the type of "integer check".

My original "intger check" was:

if ((n-Math.floor(n)) < 0.1) n is integer

This is asymmetrical as it does see 1.05 as integer, but not 1.95.

On the left is a rendering with a symmetrical version of the "integer check":

if ((n-Math.floor(n)) < 0.1) n is integer

if ((n-Math.floor(n)) > 0.9) n is integer

else n is not an integer

Voila! No squares.

Unless otherwise noted, from here on all renderings are done with the new, symmetrical "integer check".