diff -urN pwgen-2.05.orig/pw_rand.c pwgen-2.05/pw_rand.c
--- pwgen-2.05.orig/pw_rand.c	Wed Jun 15 04:18:36 2005
+++ pwgen-2.05/pw_rand.c	Fri Oct 20 21:10:08 2006
@@ -57,7 +57,7 @@
 try_again:
 	len = strlen(chars);
 	feature_flags = pw_flags;
-	for (i = 0; i < size; i++) {
+	for (i = 0; i < size;) {
 		ch = chars[pw_number(len)];
 		if (pw_flags & PW_AMBIGUOUS) {
 			if (strchr(pw_ambiguous,ch)) {
@@ -71,6 +71,7 @@
 			feature_flags &= ~PW_UPPERS;
 		if (strchr(pw_symbols, ch))
 			feature_flags &= ~PW_SYMBOLS;
+		i++;
 	}
 	if (feature_flags & (PW_UPPERS | PW_DIGITS | PW_SYMBOLS))
 		goto try_again;
