diff --git a/src/utils/FileRecordTools/Records/GffRecord.cpp b/src/utils/FileRecordTools/Records/GffRecord.cpp
index f13c8fd8c59f357eaefb4136ddb5a1a4fa8d72cb..a91ce159eb819309959d0391f70d69e8217b6808 100644
--- a/src/utils/FileRecordTools/Records/GffRecord.cpp
+++ b/src/utils/FileRecordTools/Records/GffRecord.cpp
@@ -120,3 +120,40 @@ void GffRecord::printNull(QuickString &outBuf) const
 	}
 }
 
+const QuickString &GffRecord::getField(int fieldNum) const
+{
+	if (fieldNum == 9 && _numFields == 9) {
+		return _group;
+	}
+	switch (fieldNum) {
+	case 1:
+		return _chrName;
+		break;
+	case 2:
+		return _source;
+		break;
+	case 3:
+		return _name;
+		break;
+	case 4:
+		return _startPosStr;
+		break;
+	case 5:
+		return _endPosStr;
+		break;
+	case 6:
+		return _score;
+		break;
+	case 7:
+		return _strand;
+		break;
+	case 8:
+		return _frame;
+		break;
+	default:
+		return Bed6Interval::getField(fieldNum);
+		break;
+	}
+}
+
+
diff --git a/src/utils/FileRecordTools/Records/GffRecord.h b/src/utils/FileRecordTools/Records/GffRecord.h
index 195d4beaf5453f946922b2d5ad3ba60d6da8aec5..b84d96a71384750e850de0ffe4d03bb3e8272dfd 100644
--- a/src/utils/FileRecordTools/Records/GffRecord.h
+++ b/src/utils/FileRecordTools/Records/GffRecord.h
@@ -27,9 +27,10 @@ public:
 	virtual const QuickString &getSource() const { return _source; }
 	virtual const QuickString &getFrame() const { return _frame; }
 	virtual const QuickString &getGroup() const { return _group; }
-	virtual const int getNumFields() const { return _numFields; }
+	virtual int getNumFields() const { return _numFields; }
 	virtual void setNumFields(int val) { _numFields = val; }
 
+	virtual const QuickString &getField(int fieldNum) const;
 	//Note: using the assignment operator in a GffRecord can potentially be a performance hit,
 	//if the number of fields frequently differ between this object and the one being copied.
 	const GffRecord &operator=(const GffRecord &other);