What it's returning is correct.
IsEmpty returns 1 when the field is empty and returns 0 when it contains something, regardless of what those contents are.
In your test of "Field = 0", because 0 is not quoted as a literal string it's checking two things: 1. is it empty & 2. Does it contain 0 as a number type data. Therefore leaving the field empty and putting a zero in it both return with a 1.
If you were to change your calculation to Field = "0", you would get your expected results. I added that field to your original file and have attached it. test_comparison_to_zero.fmp12 (180 KB)