Al tener el mismo problema, al final utilicé Python directamente; es posible que tenga que ajustar numpy.where para su propósito específico. En el caso a continuación, los valores de los píxeles se mantienen como están si son> = 0, todos los demás píxeles, en este caso solo los que tienen el valor sin datos, se establecen en "0"
import gdal, gdalconst, numpy
maskfile = gdal.Open('C:\Users\max\Desktop\Baltic2.tif', gdalconst.GA_Update)
maskraster = maskfile.ReadAsArray()
maskraster = numpy.where((maskraster >= 0), maskraster, 0 )
maskband = maskfile.GetRasterBand(1)
maskband.WriteArray( maskraster )
maskband.FlushCache()