diff -BurN ivtv-0.3.7f/utils/ivtv-radio.c ivtv-0.3.7f.new/utils/ivtv-radio.c
--- ivtv-0.3.7f/utils/ivtv-radio.c	2005-08-10 16:40:59.000000000 -0500
+++ ivtv-0.3.7f.new/utils/ivtv-radio.c	2005-08-10 16:52:36.000000000 -0500
@@ -112,9 +112,18 @@
 	int isafreq = 0;
 	int freqindex = 0;
 	int freqstrength;
+	int rangehigh;
+	int rangelow;
 	double freqs[5][2];
 	double printedfreq;
-	for (i = cfg.tuner.rangelow; i < cfg.tuner.rangehigh; i++) {
+	if(allfreqs == 1) {
+		rangelow = cfg.tuner.rangelow;
+		rangehigh = cfg.tuner.rangehigh;
+	} else {
+		rangelow = 1392;
+		rangehigh = 1728;
+	}
+	for (i = rangelow; i < rangehigh; i++) {
 		cfg.freq.tuner = 0;
 		cfg.freq.frequency = i;
 		if (ioctl(cfg.fh, VIDIOC_S_FREQUENCY, &cfg.freq) == -1) {
@@ -129,7 +138,7 @@
 		}
 		if (cfg.tuner.signal > 16384) {
 			printedfreq = cfg.freq.frequency;
-			freqstrength =cfg.tuner.signal;
+			freqstrength = cfg.tuner.signal;
 			//print long freq info if wanted
 			if(allfreqs == 1) {
 				printf("%3.2f, %4.0f: %d \n", printedfreq / 16.0, printedfreq, freqstrength);	
@@ -189,6 +198,7 @@
 		cfg.passthrough = 0;
 		ioctl(cfg.fh, IVTV_IOC_PASSTHROUGH, &cfg.passthrough);
 	}
+	close(cfg.fh);
 	exit(0);
 }
 
@@ -320,6 +330,5 @@
 	}
 
 	cleanup(0);
-	close(cfg.fh);
 	return 0;
 }
