anchor.diff:          with e ->
               subscription |> Option.iter (fun sub -> try sub.Dispose() with _ -> ())
               subscription <- None
  -            status <- 0
  +            status <- int ServiceStatus.Stopped
               attacheableLogger.LogErrorf "Service Start for %A failed with %A" this.Id e
               return! Async.Raise e
       }
  
positive.code:     let mutable heartbeatInterval       = TimeSpan.FromSeconds 2.
      let mutable workingDirectory        = WorkingDirectory.GetDefaultWorkingDirectoryForProcess(prefix = "mbrace.azure")
      let mutable logFile                 = None
      let mutable status                  = 0 // 0: stopped, 1: running, 2: stopping
      let mutable subscription            = None : WorkerSubscription.Subscription option
      let mutable cancellationTokenSource = None : CancellationTokenSource option
      let attacheableLogger               = AttacheableLogger.Create(makeAsynchronous = true)
  
      let setStarting  () = Interlocked.CompareExchange(&status, 1, 0) = 0
      let setStopping  () = Interlocked.CompareExchange(&status, 3, 2) = 2
      let checkStopped () = if status <> 0 then invalidOp "Cannot change Service while it is active."
      let validateInterval (i : TimeSpan) = if i < TimeSpan.FromSeconds 1. then invalidArg "interval" "Must be at least 1 second." else i
  
      /// MBrace Runtime Service.
  
negative.code:     
      /// Asynchronously starts the service with specified configuration
      member this.StartAsync() : Async<unit> = async {
          if not <| trySetStarting() then invalidOp "MBrace.Azure.Service is already running."
          try
              let sw = Stopwatch.StartNew()
              attacheableLogger.LogInfof "Starting MBrace.Azure.Service %A" workerId
  