# Rebol - 195 #

    for n 0 do input 1[b: copy a: form n d: c: 0 parse reverse a[any[m:"6"(change m"9"++ c)|"9"(change m"6"++ c)|"0"|"8"| skip(++ d)]]print rejoin [b either all[d = 0 c > 0 a != b a/1 != #"0"]"."{}]]

Ungolfed + some annotations:

    for n 0 do input 1 [
        b: copy a: form n
        d: c: 0

        ; reverse number and rotate "6" & "9"
        ; and do some counts (c when "6" or "9" and d when != "0689")
        parse reverse a [
            any [
                m:
                  "6" (change m "9" ++ c)
                | "9" (change m "6" ++ c)
                | "0"
                | "8"
                | skip (++ d)
            ]
        ]

        print rejoin [
            b either all [
                d = 0               ; only has 0689 digits
                c > 0               ; must have at least one "6" or "9"
                a != b              ; not same when reversed
                a/1 != #"0"         ; does not "end" with zero
            ]
            "." {}                  ; if ALL then print "." else blank {}
        ]
    ]