         if data.gce_status == 'RUNNING' and data.requested_status == 'RUNNING' and \
                   data.requested_preemptible and not data.gce_preemptible and data.gce_created <= misc.minutes_ago(@_switch_back_to_preemptible_m)
             dbg = @_dbg("rule3('#{data.name}')")
-            dbg("switch running instance from non-pre-empt to preempt")
+            dbg("switch running instance from non-preempt to preempt")
             @_action(data, 'preemptible', 'rule3')
+            return true
+
+    _rule4: (data) =>
+        if data.gce_status == 'RUNNING' and data.requested_status == 'RUNNING' and \
+                  not data.requested_preemptible and data.gce_preemptible
+            dbg = @_dbg("rule4('#{data.name}')")
+            dbg("switch running instance from preempt to non-preempt")
+            @_action(data, 'non-preemptible', 'rule4')
             return true
 
     _action: (data, action, type, cb) =>

        meta.source = meta.source.slice(0,i+7) + zone + meta.source.slice(j)
        return

    # Keep this instance running by checking on its status every interval_s seconds, and
    # if the status is TERMINATED, issue a start command.  The only way to stop this check
    # is to exit this process.
    keep_running: (opts={}) =>
        opts = defaults opts,
            interval_s : 30
        dbg = @dbg("keep_running(name='#{@name}', interval_s=#{opts.interval_s})")
        dbg()
        check = () =>
            dbg('check')

            return
        if @_rule3(data)
            return
        if @_rule4(data)
            return

    _rule0: (data) =>
        if data.gce_status == 'TERMINATED' and data.requested_status == 'RUNNING'
