In its default setting, INTCK counts the number of interval boundaries between the values. Somebody born on December 31 will be one year old on January 1. To avoid this, you must use the "c" (continuous) modifier.
Take a look at this blog article. I think it explains your experience with INTCK https://blogs.sas.com/content/iml/2017/05/15/intck-intnx-intervals-sas.html . Basically, INTCK returns the number of "boundary dates" that have passed. So you need to control for that. There are also some good references at the end of the article.
In its default setting, INTCK counts the number of interval boundaries between the values. Somebody born on December 31 will be one year old on January 1. To avoid this, you must use the "c" (continuous) modifier.