def METHOD_NAME(self, n1SpoolUp, n1SpoolDown, n2SpoolUp, n2SpoolDown):
    while self.fdm.run():
        n1 = self.fdm['propulsion/engine/n1']
        n2 = self.fdm['propulsion/engine/n2']
        N2norm = (n2-self.idleN2)/self.N2_factor;
        if n2 >= 100.:
            # Trigger the engine spool down
            self.fdm['fcs/throttle-cmd-norm'] = 0.0
        if N2norm > 0.0:
            self.assertAlmostEqual(n1, newN1)
            self.assertAlmostEqual(n2, newN2)
        if  n2 > 15.0:
            sigma = self.fdm['atmosphere/sigma']
            n = min(1.0, N2norm + 0.1)
            spoolup = self.delay / (1 + 3 * (1-n)*(1-n)*(1-n) + (1 - sigma))
            throttlePos = self.fdm['fcs/throttle-cmd-norm']
            targetN1 = self.idleN1+throttlePos*self.N1_factor
            targetN2 = self.idleN2+throttlePos*self.N2_factor
            newN1 = seek(n1, targetN1, n1SpoolUp(N2norm),
                         n1SpoolDown(N2norm))
            newN2 = seek(n2, targetN2, n2SpoolUp(N2norm),
                         n2SpoolDown(N2norm))
        if N2norm == 0.0 and self.fdm['fcs/throttle-cmd-norm'] == 0.0:
            break