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 {}
]
]