anchor.diff:                  |> (fun detail -> detail.[1].Trim([|'"'|]))
   
               match status with
  -            | "running"
  -            | "paused" ->
  -                logger.Debug("Waiting for VM to close")
  -                System.Threading.Thread.Sleep 3000
  -                waitForClose name
  -            | _ ->
  +            | "poweroff"
  +            | "saved" ->
                   logger.Debug(sprintf "VM status: %s" status)
                   logger.Debug("VM has closed")
                   ()
  +            | status ->
  +                logger.Debug(sprintf "Waiting for VM to close. VM status is %s." status)
  +                System.Threading.Thread.Sleep 3000
  +                waitForClose name
   
   module main =
       open NLog
  
positive.code:         selectedPartition
              |> VirtualBox.mountSpinRite vmName
  
          VirtualBox.startVM vmName
          VirtualBox.waitForClose vmName
          VirtualBox.deleteVM vmName
          0
  
negative.code:         proc.StartInfo.RedirectStandardError <- true
          proc.Start() |> ignore
  
          // Capture stdout
          let sbOut = new System.Text.StringBuilder()
          while not proc.HasExited do
              sbOut.Append(proc.StandardOutput.ReadToEnd()) |> ignore
          sbOut.Append(proc.StandardOutput.ReadToEnd()) |> ignore  // Do it again in case the process exits so quickly we never enter the loop
          let output = sbOut.ToString().Trim()
  
          // Capture stderr
          let sbErr = new System.Text.StringBuilder()
          while not proc.HasExited do
              sbErr.Append(proc.StandardError.ReadToEnd()) |> ignore
          sbErr.Append(proc.StandardError.ReadToEnd()) |> ignore  // Do it again in case the process exits so quickly we never enter the loop
  
          let output' = output + sbErr.ToString().Trim()
  
          match proc.ExitCode with
          | 0 -> Success output
          | _ -> Failure (output', proc.ExitCode)
  
  module DriveManager =
      open NLog
  