diff --git a/Demo/sgi/al/alwatch.py b/Demo/sgi/al/alwatch.py
index 2b8acdd..ac53080 100755
--- a/Demo/sgi/al/alwatch.py
+++ b/Demo/sgi/al/alwatch.py
@@ -24,7 +24,7 @@
 		for i in range(0, len(params), 2):
 			if params[i+1] <> old[i+1]:
 				name = parameter_name[params[i]]
-				if params[i] = AL.INPUT_SOURCE:
+				if params[i] == AL.INPUT_SOURCE:
 					if 0 <= old[i+1] < len(source_name):
 						oldval = source_name[old[i+1]]
 					else:
diff --git a/Demo/sgi/al/intercom.py b/Demo/sgi/al/intercom.py
index 2babb93..0799efa 100755
--- a/Demo/sgi/al/intercom.py
+++ b/Demo/sgi/al/intercom.py
@@ -28,8 +28,8 @@
 	remote = 0
 	opts, args = getopt.getopt(sys.argv[1:], 'rd')
 	for opt, arg in opts:
-		if opt = '-r': remote = 1
-		elif opt = '-d': debug.append(opt)
+		if opt == '-r': remote = 1
+		elif opt == '-d': debug.append(opt)
 	if len(args) <> 1:
 		msg = 'usage: intercom [-d] [-r] hostname'
 		msg = msg + ' (-r is for internal use only!)\n'
@@ -56,10 +56,10 @@
 		line = pipe.readline()
 		if not line: break
 		sys.stdout.write('remote: ' + line)
-		if line = 'NAK\n':
+		if line == 'NAK\n':
 			nak = 1
 			break
-		elif line = 'ACK\n':
+		elif line == 'ACK\n':
 			ack = 1
 			break
 	if nak:
@@ -135,7 +135,7 @@
 	for i in range(0, len(params), 2):
 		if params[i] in (AL.INPUT_RATE, AL.OUTPUT_RATE):
 			params[i+1] = AL.RATE_16000
-		elif params[i] = AL.INPUT_SOURCE:
+		elif params[i] == AL.INPUT_SOURCE:
 			params[i+1] = AL.INPUT_MIC
 	try:
 		al.setparams(dev, params)
@@ -166,7 +166,7 @@
 		spkr = al.openport('spkr', 'w', config)
 		while 1:
 			data = s.recv(BUFSIZE)
-			if len(data) = 0:
+			if len(data) == 0:
 				# EOF packet
 				log('parent got empty packet; killing child')
 				posix.kill(pid, 15)
diff --git a/Demo/sgi/al/playaiff.py b/Demo/sgi/al/playaiff.py
index f84a68c..756748d 100755
--- a/Demo/sgi/al/playaiff.py
+++ b/Demo/sgi/al/playaiff.py
@@ -22,11 +22,11 @@
 		except EOFError:
 			break
 		if v: print 'header:', `type`, size
-		if type = 'COMM':
+		if type == 'COMM':
 			nchannels, nsampframes, sampwidth, samprate = \
 				aiff.read_comm_chunk(f)
 			if v: print nchannels, nsampframes, sampwidth, samprate
-		elif type = 'SSND':
+		elif type == 'SSND':
 			offset, blocksize = aiff.read_ssnd_chunk(f)
 			if v: print offset, blocksize
 			data = f.read(size-8)
diff --git a/Demo/sgi/al/playold.py b/Demo/sgi/al/playold.py
index 85a157d..d0cb592 100755
--- a/Demo/sgi/al/playold.py
+++ b/Demo/sgi/al/playold.py
@@ -19,11 +19,11 @@
 	#
 	magic = f.read(4)
 	extra = ''
-	if magic = '0008':
+	if magic == '0008':
 		rate = 8000
-	elif magic = '0016':
+	elif magic == '0016':
 		rate = 16000
-	elif magic = '0032':
+	elif magic == '0032':
 		rate = 32000
 	else:
 		sys.stderr.write('no magic header; assuming 8k samples/sec.\n')
