def __init__(self, pin_id=None):
         self.id = pin_id
         self._mode = None
-        self._prv_val = None
+        self._prv_val = False
 
     def init(self, mode=IN, pull=None):
         """Initialize the Pin"""
         if self._mode in (Pin.IN, Pin.OUT):
             # digital read
             if val is None:
-                # The value returned will toggle between True and False
-                # and will be True on the first digital read
-                # TODO: Behavior needs to be tested
-                if self._prv_val == None or False:
-                    self._prv_val = True
-                else:
-                    self._prv_val = False
+                # The returned value toggles between True and false
+                self._prv_val = not self._prv_val
                 return self._prv_val
             # digital write
             if val in (Pin.LOW, Pin.HIGH):