It is well-known that although EDF is optimal for preemptive systems this is not the case in non-preemptive ones. The problem is that for a non-preemptive scheduler to be optimal, it must sometimes use inserted idle times. In this paper we show how the performance of non-preemptive EDF can be improved by using a form of lookahead that identifies when idle time insertion is necessary. Experiments show that this modification increases the number of schedulable task sets by up to 100%. Furthermore, by using a form of lazy evaluation the algorithm runs in O(nlog n) which is the same as plain EDF