** Set up some test data CREATE CURSOR Allocated (Emp_ID I, AllocDate D) INSERT INTO Allocated VALUES (1, DATE() + 1) INSERT INTO Allocated VALUES (1, DATE() + 2) INSERT INTO Allocated VALUES (1, DATE() + 3) INSERT INTO Allocated VALUES (1, DATE() + 6) INSERT INTO Allocated VALUES (1, DATE() + 7) INSERT INTO Allocated VALUES (1, DATE() + 9) INSERT INTO Allocated VALUES (1, DATE() + 10) INSERT INTO Allocated VALUES (1, DATE() + 11) INSERT INTO Allocated VALUES (1, DATE() + 16) INSERT INTO Allocated VALUES (1, DATE() + 17) INSERT INTO Allocated VALUES (2, DATE() + 1) INSERT INTO Allocated VALUES (2, DATE() + 2) INSERT INTO Allocated VALUES (2, DATE() + 4) INSERT INTO Allocated VALUES (2, DATE() + 5) INSERT INTO Allocated VALUES (2, DATE() + 7) INSERT INTO Allocated VALUES (2, DATE() + 9) INSERT INTO Allocated VALUES (2, DATE() + 10) INSERT INTO Allocated VALUES (2, DATE() + 12) INSERT INTO Allocated VALUES (2, DATE() + 13) INSERT INTO Allocated VALUES (2, DATE() + 14) * Real program #DEFINE DAYSAHEAD 21 CREATE CURSOR DaysList (FreeDate D) LOCAL lnIncr FOR lnIncr = 0 TO DAYSAHEAD - 1 INSERT INTO DaysList VALUES (DATE() + lnIncr) ENDFOR SELECT FreeDate ; FROM DaysList ; WHERE FreeDate NOT in (select AllocDate FROM Allocated WHERE Emp_ID = 1)In addition, Tom Moreau had a much more extensive algorithm in the June 2001 SQL Server Professional. See http://www.pinpub.com/sq/