diff --git a/includes/lock.inc b/includes/lock.inc
index 2eb7b9a..a02d969 100644
--- a/includes/lock.inc
+++ b/includes/lock.inc
@@ -91,7 +91,7 @@ function _lock_id() {
  * @param $name
  *   The name of the lock.
  * @param $timeout
- *   A number of seconds (float) before the lock expires (minimum of 0.001).
+ *   A number of seconds (float) before the lock expires.
  *
  * @return
  *   TRUE if the lock was acquired, FALSE if it failed.
@@ -99,8 +99,6 @@ function _lock_id() {
 function lock_acquire($name, $timeout = 30.0) {
   global $locks;
 
-  // Insure that the timeout is at least 1 ms.
-  $timeout = max($timeout, 0.001);
   $expire = microtime(TRUE) + $timeout;
   if (isset($locks[$name])) {
     // Try to extend the expiration of a lock we already acquired.
@@ -169,12 +167,14 @@ function lock_may_be_available($name) {
   $now = microtime(TRUE);
   if ($now > $expire) {
     // We check two conditions to prevent a race condition where another
-    // request acquired the lock and set a new expire time. We add a small
-    // number to $expire to avoid errors with float to string conversion.
+    // request acquired the lock and set a new expire time. Note that due to
+    // floating point precision errors, the two conditions may not be consistent
+    // within milliseconds of the timeout, but this will correct itself in the
+    // following call to this function.
     return (bool) db_delete('semaphore')
       ->condition('name', $name)
       ->condition('value', $lock['value'])
-      ->condition('expire', 0.0001 + $expire, '<=')
+      ->condition('expire', $now, '<=')
       ->execute();
   }
   return FALSE;
