Calibration + Terrain Correction sometimes produces small negative values

They can be seen in the middle of some ocean scenes. Is this expected? I would expect all values to be >0 or at least >=0.

Could you post your processing-steps and identify the image on which this happens?

For example, take S1A_EW_GRDH_1SDH_20150808T212431_20150808T212535_007177_009CD4_22AD

After running thermal noise removal, calibration and terrain correction with SRTM 1 HGT on the HH band, I open the result in numpy and look for negative values in the middle. Example:

import gdal
a=gdal.Open(’/tmp/22AD_HH.tif’).ReadAsArray()

a[9373:9379,19218:19223]
array([[ 0.00598958, 0.00596279, 0.01772623, 0.02962116, 0.03792194],
[ 0.00376035, 0.00454201, 0.01648669, 0.03029911, 0.03569747],
[ 0.00236018, 0.00215771, 0.00421594, 0.00949093, 0.01327439],
[ 0.0032955 , 0.00163994, -0.00014157, 0.00040248, 0.00153192],
[ 0.00429369, 0.0019736 , 0.000664 , 0.00082816, 0.00221705],
[ 0.00721387, 0.00718697, 0.00670753, 0.00670207, 0.00820176]], dtype=float32)

This is caused by the thermal noise removal. It’s intended for scenes over land not the ocean.
See the discussion here Striping in IW GRD VH & low backscatter scenes

It may be ok to set negative values to a very small value above zero.

Thanks! Yes, I’m replacing zero values with small positive ones.