• How about set-based approach:

    SET DATEFIRST 1

    ;WITH days(Date) AS

    (

    --Get 13th of this month

    SELECT CAST(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '-13' AS DATETIME)

    UNION ALL

    --Get 13th of next months

    SELECT DATEADD(MONTH, 1, Date) FROM days

    )

    SELECT TOP 1 * FROM days WHERE DATEPART(dw, Date) = 5 AND Date > GETDATE()