diff --git a/lib/protobuf/field/base_field.rb b/lib/protobuf/field/base_field.rb
index <HASH>..<HASH> 100644
--- a/lib/protobuf/field/base_field.rb
+++ b/lib/protobuf/field/base_field.rb
@@ -227,7 +227,7 @@ module Protobuf
 
         message_class.class_eval do
           define_method(method_name) do
-            @values.fetch(field.name, field.default_value)
+            @values[field.name] || field.default_value
           end
         end
 
diff --git a/lib/protobuf/field/bool_field.rb b/lib/protobuf/field/bool_field.rb
index <HASH>..<HASH> 100644
--- a/lib/protobuf/field/bool_field.rb
+++ b/lib/protobuf/field/bool_field.rb
@@ -46,13 +46,20 @@ module Protobuf
       #
 
       def define_getter
-        super
-
         field = self
+        method_name = field.getter
 
         message_class.class_eval do
-          alias_method "#{field.getter}?", field.getter
+          define_method(method_name) do
+            @values.fetch(field.name, field.default_value)
+          end
         end
+
+        message_class.class_eval do
+          alias_method "#{method_name}?", method_name
+        end
+
+        ::Protobuf.field_deprecator.deprecate_method(message_class, method_name) if field.deprecated?
       end
 
     end
Pull bool getter edge case into BoolField class

This is a small change, but let's us keep the optimization in base
field.