diff --git a/Cython/Compiler/PyrexTypes.py b/Cython/Compiler/PyrexTypes.py
index 9acb1032a56300cbdbe05e7d7127e39caf698822..7cd57cefddb69f4823f79009fd80a1fefe276929 100644
--- a/Cython/Compiler/PyrexTypes.py
+++ b/Cython/Compiler/PyrexTypes.py
@@ -2842,7 +2842,7 @@ class CStructOrUnionType(CType):
 
         if self._convert_to_py_code is None:
             for member in self.scope.var_entries:
-                if not member.type.to_py_function or not member.type.create_to_py_utility_code(env):
+                if not member.type.to_py_function and not member.type.create_to_py_utility_code(env):
                     self.to_py_function = None
                     self._convert_to_py_code = False
                     return False
@@ -2860,7 +2860,7 @@ class CStructOrUnionType(CType):
 
         if self._convert_from_py_code is None:
             for member in self.scope.var_entries:
-                if (not member.type.from_py_function or not
+                if (not member.type.from_py_function and not
                         member.type.create_from_py_utility_code(env)):
                     self.from_py_function = None
                     self._convert_from_py_code = False