FoxPro supports blank values in DBF files. Numeric values are blank by default and can be blanked using the BLANK command. The ISBLANK() function tells you if a numeric field is zero or blank.
When you use GATHER, REPLACE or INSERT and a memory value is present for this column, then you end up with a zero in the column. To maintain a blank value you must not write anything into it, at all. Any kind of UI bound editing whether in BROWSE, EDIT or as a ControlSource will also result in the field becoming zero. That's because we do not have blank values in memory.
When other systems read DBF files and do not have a concept of blank numeric value, then usually the blank field is replaced by 0 for numeric values or some minimum date for date and time values.
.NULL. is the standard way of doing this with almost any other database system, though.