PostgreSQL: Como retornar linhas em relação a uma linha encontrada (resultados relativos)?

Perdoe meu exemplo se não fizer sentido. Vou tentar uma simplificada para incentivar mais participação.

Considere uma tabela como a seguinte:

       dt     |    mnth    |  foo
--------------+------------+--------
  2012-12-01  |  December  |
    ...
  2012-08-01  |  August    |
  2012-07-01  |  July      |
  2012-06-01  |  June      |
  2012-05-01  |  May       |
  2012-04-01  |  April     |
  2012-03-01  |  March     |
    ...
  1997-01-01  |  January   |  

Se você procurar o registro comdt mais próximo de hoje sem passar por cima, qual seria a melhor maneira de também devolver o3 registros previamente e7 registros depois?

Eu decidi tentar as funções de janelas:

WITH dates AS (
   select  row_number() over (order by dt desc)
         , dt
         , dt - now()::date as dt_diff
   from    foo
)
, closest_date AS (
   select * from dates
   where dt_diff = ( select max(dt_diff) from dates where dt_diff <= 0 )
)

SELECT * 
FROM   dates
WHERE  row_number - (select row_number from closest_date) >= -3
   AND row_number - (select row_number from closest_date) <=  7 ;

Eu sinto que deve haver uma maneira melhor de retornar registros relativos com uma função de janela, mas já faz algum tempo desde que eu olhei para eles.

questionAnswers(3)

yourAnswerToTheQuestion