diff --git a/SRC/cgecon.f b/SRC/cgecon.f
index af3a50c6a1..ed705f796a 100644
--- a/SRC/cgecon.f
+++ b/SRC/cgecon.f
@@ -106,7 +106,7 @@
 *>          INFO is INTEGER
 *>          = 0:  successful exit
 *>          < 0:  if INFO = -i, the i-th argument had an illegal value
-*>          =-5:  if ANORM is NAN or negative.
+*>          = 1:  RCOND = NaN.
 *> \endverbatim
 *
 *  Authors:
@@ -183,7 +183,7 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
          INFO = -2
       ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
          INFO = -4
-      ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
+      ELSE IF( ANORM.LT.ZERO ) THEN
          INFO = -5
       END IF
       IF( INFO.NE.0 ) THEN
@@ -199,6 +199,10 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
          RETURN
       ELSE IF( ANORM.EQ.ZERO ) THEN
          RETURN
+      ELSE IF( SISNAN( ANORM ) ) THEN
+         RCOND = ANORM
+         INFO = 1
+         RETURN
       END IF
 *
       SMLNUM = SLAMCH( 'Safe minimum' )
@@ -258,6 +262,11 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
 *
       IF( AINVNM.NE.ZERO )
      $   RCOND = ( ONE / AINVNM ) / ANORM
+*
+*     Check for NaNs
+*
+      IF( SISNAN( RCOND ) )
+     $   INFO = 1
 *
    20 CONTINUE
       RETURN
diff --git a/SRC/dgecon.f b/SRC/dgecon.f
index 5e6dacebf1..40361a318e 100644
--- a/SRC/dgecon.f
+++ b/SRC/dgecon.f
@@ -106,7 +106,7 @@
 *>          INFO is INTEGER
 *>          = 0:  successful exit
 *>          < 0:  if INFO = -i, the i-th argument had an illegal value
-*>          =-5:  if ANORM is NAN or negative.
+*>          = 1:  RCOND = NaN.
 *> \endverbatim
 *
 *  Authors:
@@ -176,7 +176,7 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
          INFO = -2
       ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
          INFO = -4
-      ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
+      ELSE IF( ANORM.LT.ZERO ) THEN
          INFO = -5
       END IF
       IF( INFO.NE.0 ) THEN
@@ -192,6 +192,10 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
          RETURN
       ELSE IF( ANORM.EQ.ZERO ) THEN
          RETURN
+      ELSE IF( DISNAN( ANORM ) ) THEN
+         RCOND = ANORM
+         INFO = 1
+         RETURN
       END IF
 *
       SMLNUM = DLAMCH( 'Safe minimum' )
@@ -250,6 +254,11 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
 *
       IF( AINVNM.NE.ZERO )
      $   RCOND = ( ONE / AINVNM ) / ANORM
+*
+*     Check for NaNs
+*
+      IF( DISNAN( RCOND ) )
+     $   INFO = 1
 *
    20 CONTINUE
       RETURN
diff --git a/SRC/sgecon.f b/SRC/sgecon.f
index 64b96bf1f9..49c581a9b1 100644
--- a/SRC/sgecon.f
+++ b/SRC/sgecon.f
@@ -106,7 +106,7 @@
 *>          INFO is INTEGER
 *>          = 0:  successful exit
 *>          < 0:  if INFO = -i, the i-th argument had an illegal value
-*>          =-5:  if ANORM is NAN or negative.
+*>          = 1:  RCOND = NaN.
 *> \endverbatim
 *
 *  Authors:
@@ -176,7 +176,7 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
          INFO = -2
       ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
          INFO = -4
-      ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
+      ELSE IF( ANORM.LT.ZERO ) THEN
          INFO = -5
       END IF
       IF( INFO.NE.0 ) THEN
@@ -192,6 +192,10 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
          RETURN
       ELSE IF( ANORM.EQ.ZERO ) THEN
          RETURN
+      ELSE IF( SISNAN( ANORM ) ) THEN
+         RCOND = ANORM
+         INFO = 1
+         RETURN
       END IF
 *
       SMLNUM = SLAMCH( 'Safe minimum' )
@@ -250,6 +254,11 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
 *
       IF( AINVNM.NE.ZERO )
      $   RCOND = ( ONE / AINVNM ) / ANORM
+*
+*     Check for NaNs
+*
+      IF( SISNAN( RCOND ) )
+     $   INFO = 1
 *
    20 CONTINUE
       RETURN
diff --git a/SRC/zgecon.f b/SRC/zgecon.f
index 03fa09421f..0f8bba18e0 100644
--- a/SRC/zgecon.f
+++ b/SRC/zgecon.f
@@ -106,7 +106,7 @@
 *>          INFO is INTEGER
 *>          = 0:  successful exit
 *>          < 0:  if INFO = -i, the i-th argument had an illegal value
-*>          =-5:  if ANORM is NAN or negative.
+*>          = 1:  RCOND = NaN.
 *> \endverbatim
 *
 *  Authors:
@@ -183,7 +183,7 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
          INFO = -2
       ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
          INFO = -4
-      ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
+      ELSE IF( ANORM.LT.ZERO ) THEN
          INFO = -5
       END IF
       IF( INFO.NE.0 ) THEN
@@ -199,6 +199,10 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
          RETURN
       ELSE IF( ANORM.EQ.ZERO ) THEN
          RETURN
+      ELSE IF( DISNAN( ANORM ) ) THEN
+         RCOND = ANORM
+         INFO = 1
+         RETURN
       END IF
 *
       SMLNUM = DLAMCH( 'Safe minimum' )
@@ -258,6 +262,11 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
 *
       IF( AINVNM.NE.ZERO )
      $   RCOND = ( ONE / AINVNM ) / ANORM
+*
+*     Check for NaNs
+*
+      IF( DISNAN( RCOND ) )
+     $   INFO = 1
 *
    20 CONTINUE
       RETURN