diff --git a/.cleancount b/.cleancount
new file mode 100755
index 0000000000000000000000000000000000000000..d00491fd7e5bb6fa28c517a0bb32b8b506539d4d
--- /dev/null
+++ b/.cleancount
@@ -0,0 +1 @@
+1
diff --git a/.cvsignore b/.cvsignore
index d7027893735c68f05454ad27ecb078fb2bdabf2c..2509bfd9860be9a804c94d4a0f38b046766327f9 100755
--- a/.cvsignore
+++ b/.cvsignore
@@ -7,3 +7,5 @@ ast_expr.c
 mpg123-0.59r
 mpg123-0.59r.tar.gz
 update.out
+.lastclean
+.cleancount
diff --git a/Makefile b/Makefile
index b336dce57acae8b8a1b8a49145dc3b8b47737507..9d9342dee007c6dfe6bcc741d2b7d0fd9ae3af41 100755
--- a/Makefile
+++ b/Makefile
@@ -255,7 +255,9 @@ _all: all
 	@echo " +               $(MAKE) install                +"  
 	@echo " +-------------------------------------------+"  
 
-all: depend asterisk subdirs 
+all: cleantest depend asterisk subdirs 
+
+noclean: depend asterisk subdirs
 
 editline/config.h:
 	cd editline && unset CFLAGS LIBS && ./configure ; \
@@ -330,6 +332,7 @@ clean:
 	rm -f *.o *.so asterisk .depend
 	rm -f build.h 
 	rm -f ast_expr.c
+	rm -f .version
 	@if [ -f editline/Makefile ]; then $(MAKE) -C editline distclean ; fi
 	@if [ -d mpg123-0.59r ]; then make -C mpg123-0.59r clean; fi
 	$(MAKE) -C db1-ast clean
@@ -580,3 +583,14 @@ FORCE:
 
 env:
 	env
+
+# If the cleancount has been changed, force a make clean.
+# .cleancount is the global clean count, and .lastclean is the 
+# 	last clean count # we had
+# We can avoid this by making noclean
+
+cleantest:
+	if ! cmp -s .cleancount .lastclean ; then \
+		make clean; cp -f .cleancount .lastclean;\
+	fi
+		
diff --git a/README b/README
index 64bf06a2096da8d9ec7883984f8011593ce50d8d..a3cd0f746356824574b27978f219ecaaed39aa57 100755
--- a/README
+++ b/README
@@ -71,6 +71,12 @@ So let's proceed:
 1) Run "make"
 2) Run "make install"
 
+Each time you update or checkout from CVS, you are strongly encouraged 
+to ensure all previous object files are removed to avoid internal 
+inconsistency in Asterisk. Normally, this is automatically done with 
+the presence of the file .cleancount, which increments each time a 'make clean'
+is required, and the file .lastclean, which contains the last .cleancount used. 
+
 If this is your first time working with Asterisk, you may wish to install
 the sample PBX, with demonstration extensions, etc.  If so, run: