3dROIstats won't use masks that are stored as floating point numbers unless you use the -mask2fshort option also. Somewhere in your processing stream, your mask is stored as a floating point number which is fine except for this minor nuisance. So a 2 may be stored as 2.000. To see the type of data, use 3dinfo for the dataset. The "datum type" is listed for each sub-brick. Dataset types include byte, short and float (there are also complex and RGB too).
3dmerge and 3dcalc both use the -datum option to control output type. If you would like to force short integer type, use "-datum short" for those programs.