I don't see the problem, you set the column to NOT NULL, (which doesn't allow NULL values) and now it won't let you set it to NULL, which would be the expected behaviour.
The reason you have 0s in your DB is because 0 would be the result of casting NULL to an int.