diff --git a/sm5/ataprint.c b/sm5/ataprint.c
index a7f33ab882d7f402841015fc0eb18990c9f05386..25c5eadb48bb37947bb9540dadbf6e768a64e575 100644
--- a/sm5/ataprint.c
+++ b/sm5/ataprint.c
@@ -30,7 +30,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid2="$Id: ataprint.c,v 1.47 2002/11/29 10:41:58 ballen4705 Exp $"
+const char *CVSid2="$Id: ataprint.c,v 1.48 2002/12/11 23:15:43 pjwilliams Exp $"
 CVSID1 CVSID2 CVSID3 CVSID6;
 
 // for passing global control variables
@@ -742,12 +742,19 @@ void failuretest(int type, int returnvalue){
   exit(returnvalue|FAILCMD);
 }
 
-// Used to warn users about invalid checksums.  However we will not
-// abort on invalid checksums.
+// Used to warn users about invalid checksums.  Action to be taken may be
+// altered by the user.
 void checksumwarning(const char *string){
+  // user has asked us to ignore checksum errors
+  if (con->checksumignore)
+        return;
+
   pout("Warning! %s error: invalid SMART checksum.\n",string);
+
+  // user has asked us to fail on checksum errors
   if (con->checksumfail)
     exit(FAILSMART);
+
   return;
 }
 
diff --git a/sm5/ataprint.cpp b/sm5/ataprint.cpp
index 2f8f94da3ca0a12f1f19e30f5b95d5c95b2e8517..8b9e4a8cf00b0fa93886499f9b6394155d077ed5 100644
--- a/sm5/ataprint.cpp
+++ b/sm5/ataprint.cpp
@@ -30,7 +30,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid2="$Id: ataprint.cpp,v 1.47 2002/11/29 10:41:58 ballen4705 Exp $"
+const char *CVSid2="$Id: ataprint.cpp,v 1.48 2002/12/11 23:15:43 pjwilliams Exp $"
 CVSID1 CVSID2 CVSID3 CVSID6;
 
 // for passing global control variables
@@ -742,12 +742,19 @@ void failuretest(int type, int returnvalue){
   exit(returnvalue|FAILCMD);
 }
 
-// Used to warn users about invalid checksums.  However we will not
-// abort on invalid checksums.
+// Used to warn users about invalid checksums.  Action to be taken may be
+// altered by the user.
 void checksumwarning(const char *string){
+  // user has asked us to ignore checksum errors
+  if (con->checksumignore)
+        return;
+
   pout("Warning! %s error: invalid SMART checksum.\n",string);
+
+  // user has asked us to fail on checksum errors
   if (con->checksumfail)
     exit(FAILSMART);
+
   return;
 }