proc isValidYear { year } { set valid 1 if [catch {clock scan "1/1/$year" }] { set valid 0 } return $valid } proc limitvalidyear { year direction} { set stillvalid [isValidYear $year] if {! $stillvalid} { return -1 } while {$stillvalid} { if {[isValidYear $year]} { incr year $direction } else { set stillvalid 0 } } return $year } puts [limitvalidyear 2010 1] puts [limitvalidyear 2010 -1] <>Date and Time <>Example