Thanks for your comment gnwiii. My SeaDAS is still not working properly so I can't use l3bindump. ButI actually found a python code that seem to work for me. I modified it a bit so it runs faster. Sharing it here in case anyone is also looking for a way outside of SeaDAS.

================================

def binnum2latlon(binnum, nrows):

latbin = (np.arange(0, nrows, dtype=np.float_) + 0.5) * (180.0 / nrows) - 90.0

numbin = (np.cos(latbin * np.pi / 180.0) * (2.0 * nrows) + 0.5).astype(dtype=np.int_)

basebin = np.cumsum(numbin)+1

basebin = np.insert(basebin, 0, 1)

row = nrows - 1

if binnum < 1:

binnum = 1

row = (binnum >= basebin).sum() - 1

clat = latbin[row]

clon = (360.0 * (binnum - basebin[row] + 0.5) / numbin[row]) - 180.0

return (clat,clon)

================================

Note that "nrows" depends on the resolution of the satelite image.

The L3b_DAY_CYAN data have sensor spatial resolution of 300m, so nrows = 69120 (according to the "binIndexDim" dimension in the nc file).

From this doc on l3bins:

https://oceancolor.gsfc.nasa.gov/resources/docs/format/l3bins/
Data with resolution of 9km: nrows = 2160

Data with resolution of 4km: nrows = 4320

Since l3bindump does not work on my laptop, I was only able to test this code with the example Tom provided in an earlier post (i.e. bin 4568737875 translate to clat=30.141927 and clon=-89.317931).