# The bug here is that nawk should use the value of OFS that
# was current when $0 became invalid to rebuild the record.

BEGIN {
	OFS = ":"
	$0 = "a b c d e f g"
	$3 = "3333"
	# Conceptually, $0 should now be "a:b:3333:d:e:f:g"

	# Change OFS after (conceptually) rebuilding the record
	OFS = "<>"

	# Unmodifed nawk prints "a<>b<>3333<>d<>e<>f<>g" because
	# it delays rebuilding $0 until it's needed, and then it uses
	# the current value of OFS. Oops.
	print
}