anchor.diff:                  delayedJobChannel,
                   (fun c v -> 
                       async {
  -                        this.updateDelayTimer(v |> float)
  +                        this.updateDelayTimer(v |> fromValueFloat)
                       } |> Async.RunSynchronously))
   
       do logger.Info "subscribed to %A" newJobChannel
  
positive.code:             return Job.fromData (
                  queue, 
                  jobId,
                  jobHash("data").Value.Value |> string, 
                  jobHash("opts").Value.Value |> string, 
                  jobHash("progress").Value.Value |> int,
                  jobHash("timestamp").Value.Value |> float,
                  match jobHash("delay") with
                  | None -> None
                  | Some x when x.Value |> string = "undefined" -> None
                  | Some x when x.Value |> float = 0. -> None
                  | Some x -> x.Value |> float |> Some)
          }
  
      /// create a job from a redis hash
  
negative.code: 
      /// get the entry from the hash that correspons with the name
      let getHashEntryByName (hash: HashEntry array) name =
          hash |> Seq.tryFind (fun h -> h.Name |> fromValueString = name)
      
      /// calc unix time from millisecs since 1-1-1970
      let toUnixTime (dt:DateTime) = (dt - epoch).TotalMilliseconds
  